簡體   English   中英

在 flutter/dart 中解碼復雜的 json

[英]Decode complex json in flutter/dart

有人可以幫我解碼這個 json 並訪問變量嗎?

{
  "data" : [
     "items": {
                "388488": {
                    "id": 388488,
                    "name": "Galaxy Tab A7 10.4 2020",
                    "qty": 1,
                },
                "388489": {
                    "id": 388489,
                    "name": "Samsung Galaxy Tab A7 10.4 2020",
                    "qty": 1,
                },
                "388490": {
                    "id": 388490,
                    "name": " Apple iPad 10.2",
                    "qty": 1,
                }
            }
       ]
 }

注意: 388488388489 388490 ,其他項目可能不同,因此我無法創建變量並將其命名為 model class 中的特定名稱。

這是我的 model class:

class OrderPageModel{
  late final List<OrderPageModelData> orderpagemodeldata;

  OrderPageModel({
   required this.orderpagemodeldata
});

  factory OrderPageModel.fromJson(Map<String , dynamic>Json ){
    var list = Json["data"] as List ;
    List<OrderPageModelData> dataList = list.map((e) => OrderPageModelData.fromJson(e)).toList();
    return OrderPageModel(
      order_id: Json['order_id'],
        orderpagemodeldata: dataList
    );
  }
}

class OrderPageModelData{
  late Items items;
  
  OrderPageModelData({
   required this.items 
});
  factory OrderPageModelData.fromJson(Map<String , dynamic> Json ){
    return OrderPageModelData(
        items: Items.fromJson(Json['items'])
    );
  }
}

class Items{
  late final id;
  late final name;
  late final quantity;

  Items({
   this.id,
   this.name,
   this.quantity,
});
  
  
  factory Items.fromJson(Map<String , dynamic> Json){
    return Items(
      id: Json["id"],
      name: Json["name"],
      quantity: Json["qty"]
    );
  }

}

這是我解碼它的方式:

if(response.statusCode == 200){
      var decodedResponse = jsonDecode(response.body);
      orderPageModel = OrderPageModel.fromJson(decodedResponse);

      for(var i in orderPageModel.orderpagemodeldata){
        print(i.items.name);

      }
    }

當我運行我的代碼時,我得到的是null ,這意味着項目的名稱沒有定義,我知道我的代碼有什么問題。 此外,當我運行print(i.items)時,它會返回Instance of Items 誰能幫我解決這個問題?

您的Json['items']是一個 JSON object。您不能將它直接 map 到Items (其名稱違反直覺暗示它代表多個項目,但事實並非如此),而是到Map<String, dynamic> 從那里,您可以遍歷它(使用entries屬性),並將每個值傳遞給Items.fromJson

此外,您的 JSON 是無效的,因為它是。

暫無
暫無

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

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