gpt4 book ai didi

rust - 以索引为键的 serde_json 展平对象

转载 作者:行者123 更新时间:2023-12-05 04:39:23 27 4
gpt4 key购买 nike

我有一些来自外部 API 的 json,我想输入。数据的形状如下所示:

{
"summary": {
"field1": "foo",
"field2": "bar",
},
"0": {
"fieldA": "123",
"fieldB": "foobar"
},
"1": {
"fieldA": "245",
"fieldB": "foobar"
},
...
}

根据运行的查询,汇总字段下方返回了未知数量的索引对象。这些对象具有相同的形状,但与“摘要”对象的形状不同。我想使用 serde_json 将此响应键入如下内容:

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SearchResults {
pub summary: Summary,
pub results: Vec<IndexedFieldType>
}

是否可以使用 serde 宏来做到这一点?是否有一个“所有其他领域”的总称,我可以将其展平为一个 vec?

最佳答案

我最终像这样手动执行此操作:

let summary = &json.search_results["summary"];
let summary: Summary = serde_json::from_value(summary.to_owned()).unwrap();
let results: Vec<SearchResult> = json
.search_results
.as_object()
.unwrap()
.iter()
.filter(|(key, _val)| key.parse::<i32>().is_ok())
.map(|(_key, value)| serde_json::from_value(value.to_owned()).unwrap())
.collect();

Ok(SearchResults {
summary,
results
})

关于rust - 以索引为键的 serde_json 展平对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70455928/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com