de mon API: https://apl.data.gov.sg/v1/transport/carpark- Disponibilité P>
Je veux lire en utilisant Dart. J'ai appris à lire des fichiers JSON imbriqués avec une liste en ligne, mais je n'ai absolument aucune idée de la lecture d'un tel complexe. P>
4 Réponses :
Votre classe d'intervention JSON devrait être comme pour sérialiser et désérialiser
class ResponseData { List<Item> items; ResponseData({ this.items, }); factory ResponseData.fromJson(Map<String, dynamic> json) => ResponseData( items: List<Item>.from(json["items"].map((x) => Item.fromJson(x))), ); Map<String, dynamic> toJson() => { "items": List<dynamic>.from(items.map((x) => x.toJson())), }; } class Item { DateTime timestamp; List<CarparkDatum> carparkData; Item({ this.timestamp, this.carparkData, }); factory Item.fromJson(Map<String, dynamic> json) => Item( timestamp: DateTime.parse(json["timestamp"]), carparkData: List<CarparkDatum>.from( json["carpark_data"].map((x) => CarparkDatum.fromJson(x))), ); Map<String, dynamic> toJson() => { "timestamp": timestamp.toIso8601String(), "carpark_data": List<dynamic>.from(carparkData.map((x) => x.toJson())), }; } class CarparkDatum { List<CarparkInfo> carparkInfo; String carparkNumber; DateTime updateDatetime; CarparkDatum({ this.carparkInfo, this.carparkNumber, this.updateDatetime, }); factory CarparkDatum.fromJson(Map<String, dynamic> json) => CarparkDatum( carparkInfo: List<CarparkInfo>.from( json["carpark_info"].map((x) => CarparkInfo.fromJson(x))), carparkNumber: json["carpark_number"], updateDatetime: DateTime.parse(json["update_datetime"]), ); Map<String, dynamic> toJson() => { "carpark_info": List<dynamic>.from(carparkInfo.map((x) => x.toJson())), "carpark_number": carparkNumber, "update_datetime": updateDatetime.toIso8601String(), }; } class CarparkInfo { String totalLots; LotType lotType; String lotsAvailable; CarparkInfo({ this.totalLots, this.lotType, this.lotsAvailable, }); factory CarparkInfo.fromJson(Map<String, dynamic> json) => CarparkInfo( totalLots: json["total_lots"], lotType: lotTypeValues.map[json["lot_type"]], lotsAvailable: json["lots_available"], ); Map<String, dynamic> toJson() => { "total_lots": totalLots, "lot_type": lotTypeValues.reverse[lotType], "lots_available": lotsAvailable, }; } enum LotType { C, H, Y, L } final lotTypeValues = EnumValues({ "C": LotType.C, "H": LotType.H, "L": LotType.L, "Y": LotType.Y }); class EnumValues<T> { Map<String, T> map; Map<T, String> reverseMap; EnumValues(this.map); Map<T, String> get reverse { if (reverseMap == null) { reverseMap = map.map((k, v) => new MapEntry(v, k)); } return reverseMap; } }
Vous pouvez toujours importer la dart: convertir le package et utiliser la fonction JSON.Decode. P>
Utilisez simplement ce site pour convertir votre réponse JSON à la classe DART P>
JSON à DART P>
Je recommande vivement d'utiliser JSON Serializable pour de telles choses. P>
Voici un bon tutoriel pour appeler le réseau P>
Si vous avez essayé de sérialiser ou de désérialiser la charge utile JSON, cela devrait être un bon départ. Cependant, si vous rencontrez des difficultés, ce que vos modèles ressembleraient à un complexe, vous essayez de coller la charge utile JSON ici .
Bien que ces modèles soient déjà générés pour vous, il est préférable que vous puissiez Vérifiez si chaque champ fort> correspond à leur type de données Il y a des stratégies différentes en sérialisant et désérialisant JSON BAYLOAD. C'est le plus basique, mais devrait être une bonne pour des projets plus petits avec de petites équipes. L'équipe de flutter a créé un Document pour vous aider à identifier les suites Votre besoin. P> En outre, ces ressources devraient vous aider à sortir: p>
Merci !!, ces ressources sont très utiles
De rien!
Vous pouvez jeter un coup d'œil sur ce package DART ici ici PUB.DEV/PACACKAGES/JSON_SERIALISABLE