簡體   English   中英

如果沒有名稱/鍵,如何在 Flutter/Dart 中序列化/解析嵌套的 JSON 數組

[英]How do you serialize/parse a nested JSON array in Flutter/Dart if it has no name/key

我正在使用一個 RESTful API,它似乎在其他應用程序中工作並使用,它給了我這樣的東西:

 "notes": [
    [
      {
        "automaticNote": false,
        "contactId": 0,
        "caseFileId": 0,
        "dateCreated": "2019-05-02",
        "deletedTime": "2019-05-02T19:31:54.588Z"
      }
    ]
  ]

雙方括號表示一對方括號沒有與之關聯的名稱/鍵。 更糟糕的是, notes本身嵌套在一些復雜的 JSON 中。

我嘗試將JSON 用於 Dart,但它引發了錯誤。 所以我的問題是,如何序列化沒有鍵/名稱的 JSON 數組?

我通常會這樣做:

    class Note {
  bool automaticNote;
  int contactId;
  int caseFileId;
  String dateCreated;
  String deletedTime;

  Note(
      {this.automaticNote,
      this.contactId,
      this.caseFileId,
      this.dateCreated,
      this.deletedTime});

  Note.fromJson(Map<String, dynamic> json) {
    automaticNote = json['automaticNote'];
    contactId = json['contactId'];
    caseFileId = json['caseFileId'];
    dateCreated = json['dateCreated'];
    deletedTime = json['deletedTime'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['automaticNote'] = this.automaticNote;
    data['contactId'] = this.contactId;
    data['caseFileId'] = this.caseFileId;
    data['dateCreated'] = this.dateCreated;
    data['deletedTime'] = this.deletedTime;
    return data;
  }
}

但是雙 JSON 數組讓我失望了(同樣, notes本身嵌套在一個更復雜的 JSON 對象中,但為了簡單起見,我沒有在這里包含整個內容)。

謝謝!

解碼后, notes像往常一樣是一些Map<String, dynamic>的成員。 讓我們稱之為m

所以m['notes']是一個列表,誰是第一個成員, m['notes'][0]也是一個列表。 它的第一個成員m['notes'][0][0]是另一個Map<String, dynamic> ,這是您的構造函數所需要的。

因此,您應該能夠使用:

Note n = Note.fromJson(m['notes'][0][0]);

以你保存automaticNote為例;

AutomaticNote = json['notes'][0][0]['automaticNote'];

這為筆記提供了鍵,它有一個數組,其中您的數據位於第一個點或索引 0(因此是 [0] 的筆記),並且在該數組中還有另一個包含您的數據的數組。 同樣,它是第一個數組項,因此,[0],然后您最終處於數據級別,因此您可以使用自動注釋的鍵,['automaticNote']。

Note.fromJson(Map<String, dynamic> json) {
    automaticNote = json[0][0]['automaticNote'];
    contactId = json[0][0]['contactId'];
    caseFileId = json[0][0]['caseFileId'];
    dateCreated = json[0][0]['dateCreated'];
    deletedTime = json[0][0]['deletedTime'];
  }

暫無
暫無

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

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