#serde #key-value #deserialize #traits #object #structs #maps

serde-key-value-vec-map

将serde中的映射或JSON对象反序列化为实现了FromKeyValue特质的struct

2个不稳定版本

0.1.0 2021年1月11日
0.0.1 2021年1月8日

#1722 in 编码

MIT许可证

7KB
161

serde-key-value-vec-map

将serde中的映射或JSON对象反序列化为实现了FromKeyValue特质的struct。

示例

use serde_key_value_vec_map::*;

#[derive(Debug)]
struct SingleMeasurement {
    name: String,
    value: u32,
}

impl KeyValueLike for SingleMeasurement {
    type Key = String;
    type Value = u32;
    fn from_key_value(key: Self::Key, value: Self::Value) -> Self {
        Self { name: key, value }
    }
    fn key(&self) -> &Self::Key { &self.name }
    fn value(&self) -> &Self::Value { &self.value }
}

let json = r#"
    {
        "temperature": 40,
        "pressure": 123
    }
"#;

#[derive(Deserialize)]
struct Container {
    #[serde(flatten)]
    #[serde(with = "serde_key_value_vec_map")]
    measurements: Vec<SingleMeasurement>,
}

let container: Container = serde_json::from_str(json).unwrap();

println!("{:?}", container.measurements);

依赖项

~110–350KB