将 json 值添加到对象列表中

Posted

技术标签:

【中文标题】将 json 值添加到对象列表中【英文标题】:Add json values in to the list of object 【发布时间】:2022-01-20 16:17:12 【问题描述】:

如何获取此 JSON 中的所有值并将所有值添加到 dart 中的对象列表中?

 "data": [
        
            "$id": "2",
            "serviceId": 1017,
            "name": "اکو",
            "code": "235",
            "price": 1562500,
            "isDefault": true,
            "transportCostIncluded": false,
            "qty": 0,
            "minQty": 1,
            "maxQty": 2,
            "description": "یک دستگاه اکو به همراه دو باند و یک عدد میکروفن (تامین برق بعهده پیمانکار می باشد).",
            "contractorSharePercent": 65,
            "unitMeasureId": 7,
            "unitMeasureName": "هر 60 دقیقه",
            "superContractorsId": null
        ,
       
    ],

喜欢这个var list = ["2",1017,....]

【问题讨论】:

【参考方案1】:

假设你有一个 JSON 文件,你可能会这样解析:

String json = await rootBundle.loadString('file_name.json');
var response = jsonDecode(json);

你可以这样做:

List<dynamic> jsonData; //similar to var jsonData = [something, something, ...]

//traversing through each value in the key value arrangement of the json
for (var k in response.values) 
   jsonData.add(k);  //adding each value to the list

循环结束后,jsonData 将拥有您的 JSON 文件的所有值。

【讨论】:

【参考方案2】:

重要的是要知道,即使您将键放在列表中,它们也不一定按顺序排列,因为地图的工作方式。

假设你的 json 是一个地图而不是一个 json 字符串,你可以像这样将所有的值放在一个列表中:

var myList = (jsonObject['data'] as List).fold<List>(
  [], 
  (prev, curr) => [...prev, ...curr.values]
);

如果你说的是 json 字符串:

Map<String, dynamic> jsonObject = jsonDecode(jsonString);

【讨论】:

【参考方案3】:

为简单起见,我们假设此 json 未在字符串中解析。

(1) 假设你添加的代码 sn-p 是一个字符串 && 是有效的 json 你可以这样做:)

import 'dart:convert';

void main() 
  var x = json.decode('''
      
        "data": [
            
                "hello": "2",
                "serviceId": 1017,
                "name": "اکو",
                "code": "235",
                "price": 1562500,
                "isDefault": true,
                "transportCostIncluded": false,
                "qty": 0,
                "minQty": 1,
                "maxQty": 2,
                "description": "یک دستگاه اکو به همراه دو باند و یک عدد میکروفن (تامین برق بعهده پیمانکار می باشد).",
                "contractorSharePercent": 65,
                "unitMeasureId": 7,
                "unitMeasureName": "هر 60 دقیقه",
                "superContractorsId": null
            
        ]
      
  ''');
  print(x);
  List<dynamic> listOfObjects = (x['data'] as Iterable<dynamic>).toList();

  /// this is just gonna be a list of all of your object.
  print(listOfObjects);

  List<dynamic> listOfValues = (x['data'] as Iterable<dynamic>).map((_object) 
    return (_object as Map<String, dynamic>).values.toList();
  ).toList();

  /// this is gonna be a 2d array here,
  print(listOfValues);

希望这有帮助:)

这里的 json 也来自 import 'dart:convert';

【讨论】:

以上是关于将 json 值添加到对象列表中的主要内容,如果未能解决你的问题,请参考以下文章

如何将本地存储中的 JSON 对象添加到 Android Studio 上的片段列表

从 Json 中选择值以添加到下拉列表

在 iOS 中解析 json 并将值添加到对象数组

Python中 appendextendinsertadd 区别

我想将对象列表添加到 Firestore 文档,-颤动

怎么将json对象添加进json数组中