[英]How to convert Json to Map in Dart/Flutter?
I have json data but i need to convert the json to Map in dart/flutter.我有 json 数据,但我需要在飞镖/颤振中将 json 转换为 Map。 The json data is:
json 数据为:
{"kabupaten": [
{
"jec_kabupaten_id": "71",
"jec_propinsi_id": "8",
"name": "Aceh Barat"
},
{
"jec_kabupaten_id": "76",
"jec_propinsi_id": "8",
"name": "Aceh Barat Daya"
},
{
"jec_kabupaten_id": "91",
"jec_propinsi_id": "9",
"name": "Medan"
},
{
"jec_kabupaten_id": "92",
"jec_propinsi_id": "9",
"name": "Sinabung"
}
]}
I want to convert to this Map with dart/flutter:我想用飞镖/颤振转换成这个 Map:
{
"8":{
"71":"Aceh Barat",
"76":"Aceh Barat Daya",
"68":"Aceh Besar"
},
"9":{
"91":"Medan",
"92":"Sinabung"
}
}
It is possible to transform the data using fold
for example.例如,可以使用
fold
来转换数据。
void main() {
const data = {
"kabupaten": [
{
"jec_kabupaten_id": "71",
"jec_propinsi_id": "8",
"name": "Aceh Barat",
},
{
"jec_kabupaten_id": "76",
"jec_propinsi_id": "8",
"name": "Aceh Barat Daya",
},
{
"jec_kabupaten_id": "91",
"jec_propinsi_id": "9",
"name": "Medan",
},
{
"jec_kabupaten_id": "92",
"jec_propinsi_id": "9",
"name": "Sinabung",
},
],
};
final result = data['kabupaten']?.fold<Map<String, Map<String, String>>>(
{},
(prev, elem) => prev
..[elem['jec_propinsi_id']!] ??= {}
..[elem['jec_propinsi_id']!]![elem['jec_kabupaten_id']!] = elem['name']!,
);
print(result);
}
An alternative would be to build up the result in a for loop:另一种方法是在 for 循环中构建结果:
final result = <String, Map<String, String>>{};
for (final elem in data['kabupaten'] ?? []) {
result[elem['jec_propinsi_id']!] ??= {};
result[elem['jec_propinsi_id']!]![elem['jec_kabupaten_id']!] = elem['name']!;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.