首页 > 解决方案 > 如何从 android Java 的改造中访问 arralist 响应的子数组列表?

问题描述

我正在开发必须在 API 上实现的项目。此 API 响应是 ArrayList 的对象。您能帮我了解如何访问子数组列表吗?我正在使用改造 2 和 GSON。

如以下 JSON 模式所示,品牌名称将由brandsonly管理员添加,并将allorders作为具有多个子对象的数组列表添加。

就像,如果管理员添加Redmibrandsonly那么它将Redmi[]allorders.

{
    "status": "success",
    "brandsonly": [
        {
            "_id": "",
            "brandname": "SAMSUNG"
        },
        {
            "_id": "",
            "brandname": "VIVO"
        },
        {
            "_id": "",
            "brandname": "NOKIA"
        },
        {
            "_id": "",
            "brandname": "IPHONE"
        }
    ],
    "allorders": {
        "SAMSUNG": [],
        "VIVO": [],
        "NOKIA": [],
        "IPHONE": [
            {
                "_id": "",
                "order_id": "",
                "__v": 0,
                "adminconfirmation": 1,
                "finalpricetodeduct": 30950
            },
            {
                "_id": "",
                "order_id": "",
                "__v": 0,
                "adminconfirmation": 1,
                "finalpricetodeduct": 30950
            }
        ]
    }
}

我的改造电话活动:

final AllOrdersResponse allOrdersResponse = new AllOrdersResponse(userID);
Call<AllOrdersResponse> responseCall = retrofit_interface.allOrderResponse(allOrdersResponse, "Bearer " + AuthToken);

    responseCall.enqueue(new Callback<AllOrdersResponse>() {
    @Override
    public void onResponse(@NotNull Call<AllOrdersResponse> call, @NotNull Response<AllOrdersResponse> response) {
        AllOrdersResponse response1 = response.body();

    }

    @Override
    public void onFailure(@NotNull Call<AllOrdersResponse> call, @NotNull Throwable t) {
        if (t instanceof SocketTimeoutException)
           Toast.makeText(context, "Socket Time out. Please try again.", Toast.LENGTH_LONG).show();
        else
            Toast.makeText(context, t.toString(), Toast.LENGTH_LONG).show();
    }
});

AllOrdersResponse POJO 类。

public class AllOrdersResponse {

    @SerializedName("status")
    public String status;
    @SerializedName("allorders")
    public Allorders allorders;
    public List<Brandsonly> brandsonly;

    public String getStatus() {
        return status;
    }

    public Allorders getAllorders() {
        return allorders;
    }

    public List<Brandsonly> getBrandsonly() {
        return brandsonly;
    }
}

BrandResponse还为每个品牌响应创建了POJO 类。

public class BrandResponse{

    @SerializedName("_id")
    public String ID;
    public String order_id;
    public String __v;
    public String adminconfirmation;
    public String finalpricetodeduct;

    //And getters also there
}

标签: javaandroidjsonretrofit2pojo

解决方案


如果你想解析未知的 json,你应该使用这样的东西

Iterator<?> iterator = jsonObject.keys();
while (iterator.hasNext()) {
   String key = (String)iterator.next();
   //do what you want with the key.                 
}  

推荐阅读