将 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 上的片段列表