使用 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 &lt; userList.length; i++) print(userList[i].name);

以上是关于使用 Dart 语言解析嵌套 JSON 数组并将其放入模型类中的主要内容,如果未能解决你的问题,请参考以下文章

如果 Flutter/Dart 中没有名称/键,如何序列化/解析嵌套的 JSON 数组

如何从 json 中获取 int 并将其解析为 dart 中的 bool?

解析嵌套的 json 并将其保存在 csv 中

在 Dart/Flutter 中解析嵌套的 JSON

将 JSON 解析为 Dart 中的列表

如何从嵌套 Json 数组角度 2 打印和分离键和值并将其添加到选择框中