我正在使用 dio 从我的 wp rest api 获取 json 数据。如果从 wordpress 发帖,我会得到以下 json 格式。正如您所看到的,它是数组格式的。我如何将它更改为对象格式,例如 [0]、[1]、.. 不应该在数组中,而是在列表中,以便能够遍历 map 函数。我有一个封锁,真的想不通。
[{id: 6923, date: 2022-07-01T13:02:18, date_gmt: 2022-07-01T13:02:18, guid: {rendered: placehilder}, modified: 2022-07-01T13:02:19 , modified_gmt: 2022-07-01T13:02:19, slug: news, status: publish, type: post, link: placeholder, title: {rendered: News}]
更新
我对 http get 函数的响应是“Map
似乎有问题的 Map 实际上是一个 JSON 对象,这让我想起了许多 dart 模型对象上的方法,这些方法将数据从 json 或从地图传输到对象,在其他情况下也传输到 json。 (有关真实代码的更多用例 - 在您的 IDE 中搜索Dart 数据类生成器 插件,因为它将帮助生成模型类中的方法)
可以使用谷歌搜索找到其他示例。 这里是一个简单的:
class User {
final String name;
final String email;
User(this.name, this.email);
User.fromJson(Map<String, dynamic> json)
: name = json['name'],
email = json['email'];
Map<String, dynamic> toJson() => {
'name': name,
'email': email,
};
}
List 对象上还有一个有趣的构造函数,它完全按照您的要求进行操作。您可以通过参考
Dart api reference找到
from
构造函数。
const jsonArray = '''
[{"text": "foo", "value": 1, "status": true},
{"text": "bar", "value": 2, "status": false}]
''';
final List<dynamic> dynamicList = jsonDecode(jsonArray);
final List<Map<String, dynamic>> fooData =
List.from(dynamicList.where((x) => x is Map && x['text'] == 'foo'));
print(fooData); // [{text: foo, value: 1, status: true}]