Как получить доступ к субаррайлисту ответа арралистов из модификации в android Java? - PullRequest
0 голосов
/ 13 июля 2020

Я работаю над проектом, в котором мне нужно реализовать API. Этот ответ API является объектами ArrayList. Не могли бы вы помочь мне с доступом к вспомогательному массиву. Я использую retrofit2 & GSON.

Как показано в следующей схеме JSON, названия брендов будут добавлены в brandsonly администратором, и он будет добавлен в allorders как массив, у которого есть несколько подобъекты.

Например, если администратор добавит Redmi в brandsonly, тогда он создаст 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
            }
        ]
    }
}

вызов My Retrofit из активности :

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
}

1 Ответ

0 голосов
/ 13 июля 2020

Если вы хотите проанализировать неизвестное json, вы должны использовать что-то вроде this :

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