簡體   English   中英

如何從 Flutter 中的這個 Json 獲取數據?

[英]How Get Data from this Json in Flutter?

 { "features": [ { "Data": { "First Name": "AA1", "Last Name": "AA2", "Address": "AA3", "Company": "AA4", } }, "Data": { "First Name": "BB1", "Last Name": "BB2", "Address": "BB3", "Company": "BB4", } }, { "Data": { "First Name": "CC1", "Last Name": "CC2", "Address": "CC3", "Company": "CC4", } }, ...... ] }

我不知道這樣做的正確方法應該是什么

如何從具有相同名稱“數據”的 object 的 object 數組中獲取數據

從 JSON 獲取數據時,您應該創建一個 Model 來描述您要解析的 object(在本例中為Data對象)。 然后,您可以創建一個方法來解析 JSON 字符串中的 object(或對象列表):

object 將如下所示:

class Data {
    Data({
        this.firstName,
        this.lastName,
        this.address,
        this.company,
    });

    String firstName;
    String lastName;
    String address;
    String company;

    factory Data.fromJson(Map<String, dynamic> json) => Data(
        firstName: json["First Name"],
        lastName: json["Last Name"],
        address: json["Address"],
        company: json["Company"],
    );

    Map<String, dynamic> toJson() => {
        "First Name": firstName,
        "Last Name": lastName,
        "Address": address,
        "Company": company,
    };
}

然后,您可以像這樣解析 object:

// features will be the list of your JSON objects
var features = jsonData["features"]; 

// Here you parse it to the list of Data object
var datas = List<Data>.from(features.map((item) => Data.fromJson(item["Data"])));

對於 Model 創建,為了節省時間您也可以查看此工具 它支持從您的 JSON 字符串創建 Model。

您必須像這樣聲明 model :

class Feature {
    Feature(DataModel dataModel);
}

class DataModel {
  DataModel(
      {firstName: firstName, lastName: lastName, address: address, company: company});

  factory DataModel.fromJson(Map<String, dynamic> json) {
    return DataModel(
      firstName: json['firstName'],
      lastName: json['lastName'],
      address: json['address'],
      company: json['company'],
    );
  }
}

之后,您必須使用如下代碼對其進行反序列化:

var results = jsonDecode(yourJsonString)["features"];

return (results as List)
    .map((e) => DataModel(e))
    .toList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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