簡體   English   中英

如何解析包含嵌套 JSON 數組的 JSON 響應

[英]How to parse JSON response which contains nested JSON array

我正在嘗試解析來自 API 的 JSON 響應並將數據存儲到 DATA CLASS 並將數據作為 ArrayList 發送到回收器適配器。

JSON 數組里面有另一個對象數組,我無法找到正確解析該 JSON 響應的方法。

這是我的數據類:

data class OrderDetails (
val orderId: String, // order_id value from json object goes here //
val restaurantName: String, // restaurant_name value from json object goes here //
val totalCost: String, // total_cost value from json object goes here //
val orderDate: String, // order_placed_at value from json object goes here //
val orderFoodDetails: String // food_items value in json response is an array and i'm stuck here //
)

這是我的 Kotlin 代碼:

try {
val data = it.getJSONObject("data")
val success = data.getBoolean("success")

if (success) {
val arrayData = data.getJSONArray("data")
for (i in 0 until arrayData.length()) {
val orderJsonObject = arrayData.getJSONObject(i)
val orderObject = OrderDetails(
orderJsonObject.getString("order_id"),
orderJsonObject.getString("restaurant_name"),
orderJsonObject.getString("total_cost"),
orderJsonObject.getString("order_placed_at"),
orderJsonObject.getJSONArray("food_items").toString() // getting array and storing as a string
)
orderList.add(orderObject)

for (orders in orderList) {
val foodData = orders.orderFoodDetails
val jsonFood = JSONArray(foodData)
for (j in 0 until jsonFood.length()) {
val foodJsonObject = jsonFood.getJSONObject(j)
val foodObject = OrderFoodDetails(
foodJsonObject.getString("food_item_id"),
foodJsonObject.getString("name"),
foodJsonObject.getString("cost")
)
ordersFood.add(foodObject)
}
}
}

這是 Json 響應:

{
"data": {
"success": true,
"data": [
            {
"order_id": "17790",
"restaurant_name": "Rotten Tomatoes",
"total_cost": "280",
"order_placed_at": "02-11-20 19:00:54",
"food_items": [
                    {
"food_item_id": "156",
"name": "Rotten Bhajiya",
"cost": "100"
                    },
                    {
"food_item_id": "155",
"name": "Rotten Salad",
"cost": "100"
                    },
                    {
"food_item_id": "154",
"name": "Rotten Soup",
"cost": "80"
                    }
                ]
            },

所需輸出首選輸出

我的輸出我的當前輸出

你試過使用 GSON 或 Moshy lib 嗎? 使用其中之一可以更輕松地解決這種情況:)

如果您不想使用其中之一,只需嘗試將您的 for 循環替換為 map 或 for each,以使其更具可讀性。 看起來你做對了,但是你能檢查一下 try catch 塊的結果嗎?

暫無
暫無

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

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