API 給我一個 JSON 回應,如下所示:
{
"amountCredited":0,
"isFirstOrder":false,
"orderItems":[
{
"_id":624342e1c66be9001d501230,
"status":2,
"pinCode":749326,
"kioskId":61bb3982089a66001db4ab77,
"kioskActivityId":620668ad433322b99557c874
}
]
}
我正在嘗試訪問內部的資料"orderItems",以便將其提供給應用程式中的現有決議模型
order = OrderItemModel.fromJson(response.body['orderItems'] as Map<String, dynamic>);
但由于orderItemsJSON 回應中的資料位于陣列中,因此我無法以這種方式訪問??它。
"orderItems"知道此 JSON陣列將始終只有一項作為回應,我如何訪問它?
是否可以讓response.body['orderItems' : [0]]我訪問第一項資料?
uj5u.com熱心網友回復:
因為你總是知道陣列總是只有一項。我們將首先使其成為一個串列,然后訪問第一個元素。
order = OrderItemModel.fromJson((response.body['orderItems'] as List<dynamic>).first as Map<String, dynamic>);
要更好地理解它,請參閱以下代碼:
JSON 回應包含一個我們需要訪問的陣列。
final ordersArray = response.body['orderItems'] as List<dynamic>;
然后我們要訪問第一個訂單(根據問題)
final firstOrder = ordersArray.first as Map<String, dynamic>;
收到訂單后,我們會將其轉換為模型
final order = OrderItemModel.fromJson(firstOrder);
編輯:正如評論中指出的那樣,List 物件有一個呼叫的 getter first,可用于獲取第一個元素,代碼已更新。
uj5u.com熱心網友回復:
你需要轉換 asMap和List因為 Flutter 只處理這種資料型別。例如:
Map order1 = {
"_id":"624342e1c66be9001d501230",
"status":2,
"pinCode":749326,
"kioskId":"61bb3982089a66001db4ab77",
"kioskActivityId":"620668ad433322b99557c874"
};
Map order2 = {
"_id":"224342e1c66be9001d501232",
"status":1,
"pinCode":248023,
"kioskId":"41bb3982089a66001db4ab74",
"kioskActivityId":"720668ad433322b99557c875"
};
Map m = {
"amountCredited":0,
"isFirstOrder":false,
"orderItems":[
order1,
order2
]
};
print(m['orderItems'][1]);
print(m['orderItems'][1]['pinCode']);
結果將是:
{_id: 224342e1c66be9001d501232, status: 1, pinCode: 248023, kioskId: 41bb3982089a66001db4ab74, kioskActivityId: 720668ad433322b99557c875}
248023
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/452078.html
上一篇:Java基礎——泛型
