[英]Dart/Flutter: Parsing Json object
我正在嘗試在我的 Flutter 應用程序中解析一些獨特的 JSON 數據。
{
"NewDataSet": {
"Route": [
{
"RouteID": "1",
"RouteNum": "20",
"Description": "NORTH DAKOTA "
},
{
"RouteID": "11",
"RouteNum": "25",
"Description": "East SD "
}
]
}
}
我不確定如何用兩個對象解析它。
只要您知道收到的數據,您就可以鏈接方括號並簡單地引用各自的名稱。
import 'dart:convert';
void main() {
decodeJSON();
}
void decodeJSON() async {
String data =
'{"NewDataSet": {"Route": [{"RouteID": "1","RouteNum": "20","Description": "NORTH DAKOTA "},{"RouteID": "11","RouteNum": "25","Description": "East SD "}]}}';
try {
dynamic decoded = await jsonDecode(data);
dynamic newDataSet = await decoded['NewDataSet'];
dynamic routes = await decoded['NewDataSet']['Route'];
print(newDataSet);
print(routes);
} catch (e) {
print(e);
}
}
您可以使用json2dart將您的 json 轉換為 dart 類,即使是復雜和嵌套的 json 數據也可以正常工作。
這是給定 json 數據的 dart class 版本:
class Autogenerated {
NewDataSet newDataSet;
Autogenerated({this.newDataSet});
Autogenerated.fromJson(Map<String, dynamic> json) {
newDataSet = json['NewDataSet'] != null
? new NewDataSet.fromJson(json['NewDataSet'])
: null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.newDataSet != null) {
data['NewDataSet'] = this.newDataSet.toJson();
}
return data;
}
}
class NewDataSet {
List<Route> route;
NewDataSet({this.route});
NewDataSet.fromJson(Map<String, dynamic> json) {
if (json['Route'] != null) {
route = new List<Route>();
json['Route'].forEach((v) {
route.add(new Route.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.route != null) {
data['Route'] = this.route.map((v) => v.toJson()).toList();
}
return data;
}
}
class Route {
String routeID;
String routeNum;
String description;
Route({this.routeID, this.routeNum, this.description});
Route.fromJson(Map<String, dynamic> json) {
routeID = json['RouteID'];
routeNum = json['RouteNum'];
description = json['Description'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['RouteID'] = this.routeID;
data['RouteNum'] = this.routeNum;
data['Description'] = this.description;
return data;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.