【问题标题】:Add json values in to the list of object将 json 值添加到对象列表中
【发布时间】: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,....]

【问题讨论】:

    标签: flutter dart gradle


    【解决方案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';

        【讨论】:

          猜你喜欢
          • 2017-11-30
          • 2020-12-03
          • 2017-12-24
          • 2017-11-10
          • 2023-03-28
          • 1970-01-01
          • 1970-01-01
          • 2020-12-01
          • 1970-01-01
          相关资源
          最近更新 更多