Skip to main content

VariantToJson

Trait VariantToJson 

Source
pub trait VariantToJson {
    // Required methods
    fn to_json(&self, buffer: &mut impl Write) -> Result<(), ArrowError>;
    fn to_json_string(&self) -> Result<String, ArrowError>;
    fn to_json_value(&self) -> Result<Value, ArrowError>;
}
Expand description

Extension trait for converting Variants to JSON

Required Methods§

Source

fn to_json(&self, buffer: &mut impl Write) -> Result<(), ArrowError>

This function writes JSON directly to any type that implements Write, making it efficient for streaming or when you want to control the output destination.

See VariantToJson::to_json_string for a convenience function that returns a JSON string.

§Arguments
  • writer - Writer to output JSON to
  • variant - The Variant value to convert
§Returns
  • Ok(()) if successful
  • Err with error details if conversion fails
§Examples
let variant = Variant::from("Hello, World!");
let mut buffer = Vec::new();
variant.to_json(&mut buffer)?;
assert_eq!(String::from_utf8(buffer).unwrap(), "\"Hello, World!\"");
§Example: Create a [Variant::Object] and convert to JSON
let mut builder = VariantBuilder::new();
// Create an object builder that will write fields to the object
let mut object_builder = builder.new_object();
object_builder.insert("first_name", "Jiaying");
object_builder.insert("last_name", "Li");
object_builder.finish();
// Finish the builder to get the metadata and value
let (metadata, value) = builder.finish();
// Create the Variant and convert to JSON
let variant = Variant::try_new(&metadata, &value)?;
let mut writer = Vec::new();
variant.to_json(&mut writer)?;
assert_eq!(br#"{"first_name":"Jiaying","last_name":"Li"}"#, writer.as_slice());
Source

fn to_json_string(&self) -> Result<String, ArrowError>

Convert [Variant] to JSON String

This is a convenience function that converts a Variant to a JSON string. This is the same as calling VariantToJson::to_json with a Vec. It’s the simplest way to get a JSON representation when you just need a String result.

§Arguments
  • variant - The Variant value to convert
§Returns
  • Ok(String) containing the JSON representation
  • Err with error details if conversion fails
§Examples
let variant = Variant::Int32(42);
let json = variant.to_json_string()?;
assert_eq!(json, "42");
§Example: Create a [Variant::Object] and convert to JSON

This example shows how to create an object with two fields and convert it to JSON:

{
  "first_name": "Jiaying",
  "last_name": "Li"
}
let mut builder = VariantBuilder::new();
// Create an object builder that will write fields to the object
let mut object_builder = builder.new_object();
object_builder.insert("first_name", "Jiaying");
object_builder.insert("last_name", "Li");
object_builder.finish();
// Finish the builder to get the metadata and value
let (metadata, value) = builder.finish();
// Create the Variant and convert to JSON
let variant = Variant::try_new(&metadata, &value)?;
let json = variant.to_json_string()?;
assert_eq!(r#"{"first_name":"Jiaying","last_name":"Li"}"#, json);
Source

fn to_json_value(&self) -> Result<Value, ArrowError>

Convert [Variant] to serde_json::Value

This function converts a Variant to a serde_json::Value, which is useful when you need to work with the JSON data programmatically or integrate with other serde-based JSON processing.

§Arguments
  • variant - The Variant value to convert
§Returns
  • Ok(Value) containing the JSON value
  • Err with error details if conversion fails
§Examples
let variant = Variant::from("hello");
let json_value = variant.to_json_value()?;
assert_eq!(json_value, Value::String("hello".to_string()));

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<'m, 'v> VariantToJson for Variant<'m, 'v>

Source§

fn to_json(&self, buffer: &mut impl Write) -> Result<(), ArrowError>

Source§

fn to_json_string(&self) -> Result<String, ArrowError>

Source§

fn to_json_value(&self) -> Result<Value, ArrowError>

Implementors§