簡體   English   中英

Dart/Flutter:解析 Json object

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM