Function json_to_variant

Source
pub fn json_to_variant(
    json: &str,
    builder: &mut VariantBuilder,
) -> Result<(), ArrowError>
Expand description

Converts a JSON string to Variant using [VariantBuilder]. The resulting value and metadata buffers can be extracted using builder.finish()

§Arguments

  • json - The JSON string to parse as Variant.
  • variant_builder - Object of type VariantBuilder used to build the vatiant from the JSON string

§Returns

  • Ok(()) if successful
  • Err with error details if the conversion fails

let mut variant_builder = VariantBuilder::new();
let person_string = "{\"name\":\"Alice\", \"age\":30, ".to_string()
+ "\"email\":\"alice@example.com\", \"is_active\": true, \"score\": 95.7,"
+ "\"additional_info\": null}";
json_to_variant(&person_string, &mut variant_builder)?;

let (metadata, value) = variant_builder.finish();

let variant = parquet_variant::Variant::try_new(&metadata, &value)?;

let json_result = variant_to_json_string(&variant)?;
let json_value = variant_to_json_value(&variant)?;

let mut buffer = Vec::new();
variant_to_json(&mut buffer, &variant)?;
let buffer_result = String::from_utf8(buffer)?;
assert_eq!(json_result, "{\"additional_info\":null,\"age\":30,".to_string() +
"\"email\":\"alice@example.com\",\"is_active\":true,\"name\":\"Alice\",\"score\":95.7}");
assert_eq!(json_result, buffer_result);
assert_eq!(json_result, serde_json::to_string(&json_value)?);