如何在Dart中将Reddit API返回的帖子转换为对象列表?
问题
我需要从Reddit API获取帖子,帖子数据在children节点下,但每个子对象内部还嵌套了另一个data对象。我能处理简单的JSON解析,但这种深度嵌套的结构让我困惑,求帮忙写一个把给定JSON转换成Dart对象列表的函数。
给定的JSON字符串:
{ "kind": "Listing", "data": { "after": "t3_zzzhq4", "dist": 2, "children": [ { "kind": "t3", "data": { "selftext": "blablabla", "author_fullname": "3xblabla", "title": "moreblabla", "created": 1672515982, "id": "10020p0" } }, { "kind": "t3", "data": { "selftext": "blablabla", "author_fullname": "3xblabla", "title": "moreblabla", "created": 1672515982, "id": "10020p0" } } ], "before": null } }
解决方案
- 第一步:使用JSON转Dart类的工具,将上述JSON字符串粘贴进去,生成对应的Dart实体类(比如包含
selftext、author_fullname等字段的Post类,以及配套的fromJson构造方法)。 - 第二步:解码JSON字符串:
final jsonResponse = json.decode(jsonString);
- 第三步:从嵌套结构中提取并反序列化帖子数据,核心是要访问每个
children元素里的data节点:
List<Post> postsList = jsonResponse['data']['children'] .map((child) => Post.fromJson(child['data'])) .toList();
关键就是child['data']这一步,通过它才能正确获取到每个帖子的实际数据并完成反序列化,希望能帮到有同样问题的人。
内容的提问来源于stack exchange,提问作者inchillout
相关产品推荐
相关产品推荐

