pub fn to_raw_value<T>(value: &T) -> Result<Box<RawValue>, Error>
Expand description
Convert a T
into a boxed RawValue
.
§Example
// Upstream crate
pub struct Thing {
foo: String,
bar: Option<String>,
extra_data: Box<RawValue>,
}
// Local crate
use serde::Serialize;
use serde_json::value::{to_raw_value, RawValue};
#[derive(Serialize)]
struct MyExtraData {
a: u32,
b: u32,
}
let my_thing = Thing {
foo: "FooVal".into(),
bar: None,
extra_data: to_raw_value(&MyExtraData { a: 1, b: 2 }).unwrap(),
};
§Errors
This conversion can fail if T
’s implementation of Serialize
decides to
fail, or if T
contains a map with non-string keys.
use std::collections::BTreeMap;
// The keys in this map are vectors, not strings.
let mut map = BTreeMap::new();
map.insert(vec![32, 64], "x86");
println!("{}", serde_json::value::to_raw_value(&map).unwrap_err());