假设我有一个很大的 JSON 文件。我的目标是删除该 JSON 中的嵌套字段并写入一个新文件。
use serde_json::Value;
use serde_json::Map;
fn main() {
let data = r#"{
"name": "John Doe",
"age": 43,
"nested":{
"to.be.removed": [
"+44 1234567",
"+44 2345678"
],
"other": "important fields"
}
}"#;
let mut map :Map<String, Value> =serde_json::from_str(data).expect("failed to read file");
// how do i remove "to.be.removed"?
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何删除这样的嵌套属性。
由于 json 非常复杂,我必须坚持使用 Map,因为我对结构不感兴趣。获取嵌套的值会呈现出一个Value. 我只想将值更改为地图,然后像这样插入
map.insert(String::from("nested"), nested);。
E_n*_*ate 10
最直接的方法是使用JSON 值类型 API遍历根 JSON 对象的子元素,直到到达要删除或插入的项目。
let data = r#"{
"name": "John Doe",
"age": 43,
"nested":{
"to.be.removed": [
"+44 1234567",
"+44 2345678"
],
"other": "important fields"
}
}"#;
let mut map: Map<String, Value> = serde_json::from_str(data)
.expect("failed to read file");
// get to the nested object "nested"
let nested = map.get_mut("nested")
.expect("should exist")
.as_object_mut()
.expect("should be an object");
// now remove the child from there
nested.remove("to.be.removed");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1756 次 |
| 最近记录: |