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