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