Как извлечь этот JSON Array из Array с Volley? - PullRequest
0 голосов
/ 12 июня 2019

json Image Я пытаюсь извлечь список (массив) данных из объекта Json, но я не знаю, как это сделать. это ценность "ингредиентов", которые я пытаюсь извлечь. Я пытаюсь извлечь его в виде строки, но он выходит без форматирования. Я также предоставил изображение необработанного JSON enter code here. если я пытаюсь извлечь его как «cake.optJSONArray», я получаю исключение java.lang.ClassCastException: org.json.JSONArray не может быть приведен к java.util.List Я добавил больше кода, чтобы помочь понять вопрос (скрестив пальцы, я не сделал его более запутанным).

   try {

                for (int i = 0; i < response.length(); i++) {
                    JSONObject cake = response.getJSONObject(i);

                    String cakeId = cake.optString("id");
                    String cakeName = cake.optString("name");


                    List<Ingredients> ingredients = (List<Ingredients>) cake.optJSONArray("ingredients");

                    mCakeList.add(new CakesItem(cakeId,ingredients, cakeName));
                }

открытый класс CakesItem {

private String mId;
private List<Ingredients> mIngredients;
private String mName;

public CakesItem(String cakeId, Lists <Ingrediets> ingredients String cakeName) {
    mId = cakeId;
    mIngredients = ingredients;
    mName = cakeName;

}

открытый класс Ingredients реализует Parcelable {

private double quantity;
private String measure, ingredient;


public Ingredients() {
}

1 Ответ

1 голос
/ 12 июня 2019

Я не уверен, какую библиотеку JSON вы используете, но если вы импортируете org.json.JSONArray, то если ваш торт является org.json.JSONObject, который вы получили из ответа JSONObject, возвращенного из Volley, вы быиспользуйте следующий синтаксис:

JSONObject cake = response.getJSONObject(i);
JSONArray ingredients = cake.getJSONArray("ingredients");

Затем вы можете получить значения из ингредиентов JSONArray в свой список.Это будет выглядеть примерно так:

for (int i = 0; i < response.length(); i++) {
    JSONObject cake = response.getJSONObject(i);

    String cakeId = cake.optString("id");
    String cakeName = cake.optString("name");

    JSONArray JSONingredients = cake.optJSONArray("ingredients");

    List<Ingredients> ingredients = new List<Ingredients>();

    for (int j = 0; j < JSONingredients.length(); j++) {
        JSONObject item = JSONingredients.getObject(j);

        String measure = item.getString(“measure”);
        String ingredient = item.getString(“ingredient”);
        Double quantity = item.getDouble(“quantity”);

        Ingredients item2 = new Ingredients(measure, ingredient, quantity);
        ingredients.add(item2);
      } 


      mCakeList.add(new CakesItem(cakeId,ingredients, cakeName));
    }
...