gpt4 book ai didi

json - 使用未知键序列化 JSON

转载 作者:行者123 更新时间:2023-12-03 04:04:22 25 4
gpt4 key购买 nike

我正在使用 json_serializable pub package满足我所有的 RESTful API 需求,效果很好,但现在我正在尝试序列化来自 Wikipedia 的内容。

我的问题是响应结构,其中一个键是事先未知的,并且根据返回的页面 ID 是动态的,这是一个示例:

我只想获取页面的介绍部分,我的查询是:
https://en.wikipedia.org/w/api.php?action=query&format=json&prop=extracts&redirects=1&exintro=1&explaintext=1&titles=Stack%20Overflow

响应将是:

{
"batchcomplete": "",
"query": {
"pages": {
"21721040": {
"pageid": 21721040,
"ns": 0,
"title": "Stack Overflow",
"extract": "Stack Overflow is a privately held website, the flagship site of ......."
}
}
}
}

最终我只想得到内部的 extract字符串,但是“在我的路上”,我在 pages 下有页面 ID .

当我不知道什么是关键时,我找不到如何获取对象,也不使用 json_serializable package也没有显式编写 JSON 导入代码。是否可以?

PS,我确实认为我找到了一种需要两次 API 调用的方法 - 如果我添加 indexpageids 标记并将其设置为 true, i will receive an additional dictionary entry called pageids with the page id numbers as string ,然后我可以在第二个 API 调用中使用检索到的字符串。

我仍然不知道我会做的确切方式,但我很确定这是可能的,但每次发送 2 个 API 请求很昂贵,我想知道是否有更优雅的方式来做到这一点。

最佳答案

确保使用最新版本的 json_serializable。使用 Map<String, Page>对于键值对:

@JsonSerializable()
class Query {
final Map<String, Page> pages;

Query(this.pages);
factory Query.fromJson(Map<String, dynamic> json) => _$QueryFromJson(json);
Map<String, dynamic> toJson() => _$QueryToJson(this);
}

只是为了证明它有效,下面是 json_serializable 生成的内容:
Query _$QueryFromJson(Map<String, dynamic> json) {
return new Query((json['pages'] as Map<String, dynamic>)?.map((k, e) =>
new MapEntry(
k, e == null ? null : new Page.fromJson(e as Map<String, dynamic>))));
}

关于json - 使用未知键序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51583386/

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