Wie Deserialisieren eine Liste von Objekten, die aus json-in-flattern
Ich bin mit dem dart-Paket json_serializable für die json-Serialisierung. Blick auf das flattern Dokumentation zeigt, wie Deserialisieren ein einzelnes Objekt wie folgt:
Future<Post> fetchPost() async {
final response =
await http.get('https://jsonplaceholder.typicode.com/posts/1');
if (response.statusCode == 200) {
//If the call to the server was successful, parse the JSON
return Post.fromJson(json.decode(response.body));
} else {
//If that call was not successful, throw an error.
throw Exception('Failed to load post');
}
}
Allerdings bin ich nicht vertraut genug mit dart, herauszufinden, wie zu tun die selben für Sie eine Liste der Elemente, statt eine einzige Instanz.
- gut, es dekodiert die Antwort Körper, und übergibt es in die im wesentlichen eine POST-Konstruktor. Wenn Ihr dekodiert JSON ein array ist, müssen Sie die Schleife, die Sie und erstellen Sie eine Reihe von Posts. Ist es das, was Sie fordern? überprüfen Sie den Typ der zu decodieren, um sicherzustellen, es ist durchsuchbar und dann tun Sie so etwas wie:
List<Post> posts = json.decode(response.body).map((Map m)=> Json.fromJson(m)).toList();
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, Ihre Dienstleistung behandeln würde entweder die Antwort Körper als eine Karte oder eine Liste der Karten entsprechend. Basierend auf dem code, den Sie haben, Sie sind Buchhaltung für 1 Element.
Wenn die Antwort Körper ist ein iterierbar, dann werden Sie brauchen, um zu analysieren und zu Fuß entsprechend, wenn ich verstehe deine Frage richtig.
Beispiel:
wo Beiträge ist eine LISTE der Beiträge.
BEARBEITEN: ich wollte, um eine Notiz hinzuzufügen, der hier Klarheit. Der Zweck hier ist, dass Sie decodieren der Antwort zurückgegeben. Der nächste Schritt ist, dass die wiederholenden von json-Objekten in eine Instanz des Objekts. Dies geschieht durch erstellen fromJson Methoden in Ihre Klasse richtig zu nehmen json und implementieren Sie diese entsprechend. Unten ist eine Beispiel-Implementierung.
Bin ich ein bisschen abstrahiert von Dart-in diesen Tagen zu Gunsten eines besseren Dienstprogramm für die Aufgaben benötigen, erreicht. Also meine syntax ist wahrscheinlich nur ein wenig, aber das ist Pseudocode.
_TypeError (type '(Map<dynamic, dynamic>) => UserInfoV1' is not a subtype of type '(dynamic) => dynamic' of 'f')
Nur ein weiteres Beispiel für JSON-Parsing für eine weitere Klarstellung.
Lassen Sie uns sagen, wir wollen parse-items-array im JSON-Objekt.
Erstellen Sie zunächst eine Klasse, entspricht Ihre json-Daten, in meinem Fall, ich erstellen (generieren) Klasse namens
Img
:PS. Sie können app.quicktype.io für die Generierung der json-Daten Klasse in dart.
dann senden Sie post/get an den server:
weitere info dies ist ein Artikel über Das analysieren komplexer JSON-in-Flattern