Skip to main content

Module json_string

Module json_string 

Source
Expand description

Serde module for fields that carry stringified JSON on the wire.

Use #[serde(with = "api_bones::serde::json_string")] to transparently serialize any T: Serialize as a JSON string and deserialize a JSON string back into T: DeserializeOwned.

§Wire format

{ "payload": "{\"key\":\"value\"}" }

§Examples

use serde::{Deserialize, Serialize};

#[derive(Debug, PartialEq, Serialize, Deserialize)]
struct Inner {
    key: String,
}

#[derive(Debug, PartialEq, Serialize, Deserialize)]
struct Outer {
    #[serde(with = "api_bones::serde::json_string")]
    payload: Inner,
}

let outer = Outer { payload: Inner { key: "value".to_string() } };
let json = serde_json::to_string(&outer).unwrap();
assert_eq!(json, r#"{"payload":"{\"key\":\"value\"}"}"#);

let back: Outer = serde_json::from_str(&json).unwrap();
assert_eq!(back, outer);

Functions§

deserialize
Deserialize a JSON string into T.
serialize
Serialize value as a JSON string.