Tes*_*est 1 rust serde serde-json
在 serde_json 库中,是否可以解析 json 并将一个属性名称映射到 Rust 中的另一个属性名称struct?
例如,解析这个json:
{
"json_name": 3
}
Run Code Online (Sandbox Code Playgroud)
进入这个结构:
StructName { struct_name: 3 }
Run Code Online (Sandbox Code Playgroud)
请注意,“json_name”和“struct_name”是不同的。
您可以使用字段属性来告诉 serde 您想要使用与 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);
}
Run Code Online (Sandbox Code Playgroud)
注意:您将需要deriveserde 的 crate 功能(serde = { version = "1.0", features = ["derive"] }in Cargo.toml),并确保与 JSON 数据一起使用的结构具有适当的派生宏。
| 归档时间: |
|
| 查看次数: |
1926 次 |
| 最近记录: |