可以映射serde_json名称到不同的结构值吗?



在serde_json库中,是否可以解析json并将一个属性名称映射到Ruststruct中的不同属性名称?

例如,解析如下json:

{
"json_name": 3
}

插入结构体:

StructName { struct_name: 3 }

注意json_name"one_answers";struct_name"是不同的。

您可以使用字段属性告诉服务器,您希望使用Rust中称为字段的名称以外的名称。这告诉serde json字段data应该写入结构体的new_data字段:

use serde::Deserialize;
use serde_json;
static JSON: &'static str = r#"{ "data": 4 }"#;
#[derive(Deserialize)]
struct Foo {
data: u8,
}
#[derive(Deserialize)]
struct Bar {
#[serde(rename = "data")]
new_data: u8,
}
fn main() {
let foo: Foo = serde_json::from_str(JSON).unwrap();
let bar: Bar = serde_json::from_str(JSON).unwrap();
assert_eq!(foo.data, bar.new_data);
}

注意:您将需要derivecrate特性的服务器(Cargo.toml中的serde = { version = "1.0", features = ["derive"] }),并确保您使用JSON数据的结构有适当的派生宏。

最新更新