Struct serde_with::json::JsonString

source ·
pub struct JsonString<T = Same>(_);
Available on crate feature json only.
Expand description

Serialize value as string containing JSON

Note: This type is not necessary for normal usage of serde with JSON. It is only required if the serialized format contains a string, which itself contains JSON.

Errors

Serialization can fail if T’s implementation of Serialize decides to fail, or if T contains a map with non-string keys.

Examples

#[serde_as]
#[derive(Deserialize, Serialize)]
struct A {
    #[serde_as(as = "JsonString")]
    other_struct: B,
}
#[derive(Deserialize, Serialize)]
struct B {
    value: usize,
}

let v: A = serde_json::from_str(r#"{"other_struct":"{\"value\":5}"}"#).unwrap();
assert_eq!(5, v.other_struct.value);

let x = A {
    other_struct: B { value: 10 },
};
assert_eq!(
    r#"{"other_struct":"{\"value\":10}"}"#,
    serde_json::to_string(&x).unwrap()
);

The JsonString converter takes a type argument, which allows altering the serialization behavior of the inner value, before it gets turned into a JSON string.

#[serde_as]
#[derive(Debug, Serialize, Deserialize, PartialEq)]
struct Struct {
    #[serde_as(as = "JsonString<Vec<(JsonString, _)>>")]
    value: BTreeMap<[u8; 2], u32>,
}

let value = Struct {
    value: BTreeMap::from([([1, 2], 3), ([4, 5], 6)]),
};
assert_eq!(
    r#"{"value":"[[\"[1,2]\",3],[\"[4,5]\",6]]"}"#,
    serde_json::to_string(&value).unwrap()
);

Trait Implementations§

Deserialize this value from the given Serde deserializer.
Serialize this value into the given Serde serializer.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.