假設我有一個很大的 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"?
}
操場
我不知道如何洗掉這樣的嵌套屬性。
由于 json 非常復雜,我必須堅持使用 Map,因為我對結構不感興趣。獲取nested 的值使我得到一個Value. 我只想將值更改為地圖,然后像這樣插入
map.insert(String::from("nested"), nested);。
uj5u.com熱心網友回復:
最直接的方法是使用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");
操場
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/404623.html
標籤:
