使用 Dart 语言解析嵌套 JSON 数组并将其放入模型类中
Posted
技术标签:
【中文标题】使用 Dart 语言解析嵌套 JSON 数组并将其放入模型类中【英文标题】:Parse Nested JSON Array and put it in a Model class using Dart Language 【发布时间】:2019-01-29 09:48:39 【问题描述】:关于我的问题here
我想在 JSON 数组中解析一个没有键的 JSON 数组并将其放入 Model 类中。
这是我要解析的 JSON 数组。
[
"pk": 100,
"user": 5,
"name": "Flutter",
"details": "Fluttery",
"images": [
89,
88,
87,
86
],
"priority": 5
,
"pk": 99,
"user": 5,
"name": "",
"details": "h",
"images": [],
"priority": 5
,
"pk": 98,
"user": 5,
"name": "Flutter",
"details": "Fluttery",
"images": [
85
],
"priority": 5
,
]
我已成功解析主数组,但无法解析包含整数数组的 images
键。我想把它放到模型类中。请帮忙。
谢谢!
【问题讨论】:
【参考方案1】:您能否参考使用 dart:convert 手动序列化 JSON 部分 here。如果您仍然面临问题,请发布错误/困难。
【讨论】:
无法在Map
中传递解码后的 json,因为使用 json.decode(result) 的结果是一个数组。【参考方案2】:
你可以这样做:
final jsonList = json.decode(response.body) as List;
final userList = jsonList.map((map) => User.fromJson(map)).toList();
用户类
class User
final int pk;
final String name;
final List<int> images;
User._(this.pk, this.name, this.images);
factory User.fromJson(Map<String, dynamic> json)
return new User._(
pk: json['pk'],
name: json['name'],
images: (json['images'] as List).map((map) => int.parse("$map")).toList());
打印您的数据
for (var i = 0; i < userList.length; i++)
print(userList[i].name);
final imageList = userList[i].images;
for (var j = 0 ; j < imageList.length; j++)
print("image: $imageList[j]");
【讨论】:
谢谢!我会尝试这个解决方案,并会尽快回到这里。 :) 有效!但是如何使用嵌套的 for 循环调用图像?我用这个来称呼这个名字。for (var i = 0; i < userList.length; i++) print(userList[i].name);
以上是关于使用 Dart 语言解析嵌套 JSON 数组并将其放入模型类中的主要内容,如果未能解决你的问题,请参考以下文章
如果 Flutter/Dart 中没有名称/键,如何序列化/解析嵌套的 JSON 数组