Разбор массива JSON с подмассивом с GSON? - PullRequest
4 голосов
/ 13 марта 2012

Скажем, у меня есть строка JSON, например:

{"title":"aaa","url":"bbb","image":{"url":"ccc","width":"100","height":"200"}, ...

Мой аксессор:

import com.google.gson.annotations.SerializedName;

public class accessorClass {

    @SerializedName("title")
    private String title;

    @SerializedName("url")
    private String url;

    @SerializedName("image")
    private String image;

    // how do I place the sub-arrays for the image here?
    ...


    public final String get_title() {
        return this.title;
    }

    public final String get_url() {
        return this.url;
    }

    public final String get_image() {
        return this.image;
    }

    ...

}

И мой главный:

            Gson gson = new Gson();
            JsonParser parser = new JsonParser();
            JsonArray Jarray = parser.parse(jstring).getAsJsonArray();

            ArrayList<accessorClass > aens = new ArrayList<accessorClass >();

            for(JsonElement obj : Jarray )
            {
                accessorClass ens = gson.fromJson( obj , accessorClass .class);
                aens.add(ens);
            }

Как вы думаете, что будет лучшим способом получить эти подмассивы для изображения здесь?

1 Ответ

3 голосов
/ 13 марта 2012

К вашему сведению, если ваш JSON является массивом: {"results:":[{"title":"aaa","url":"bbb","image":{"url":"ccc","width":"100","height":"20...},{}]}

Тогда вам нужен класс-оболочка:

class WebServiceResult {
    public List<AccessorClass> results;
}

Если ваш JSON не отформатирован таким образом, то цикл Forвы создали это сделаете, (если не немного неуклюже, было бы лучше, если ваш JSON сформирован, как указано выше).

Создайте класс Image

class ImageClass {
    private String url;
    private int width;
    private int height;

    // Getters and setters
}

Затем измените AccessorClass

    @SerializedName("image")
    private ImageClass image;

    // Getter and setter

Затем GSON входящая строка

Gson gson = new Gson();
AccessorClass object = gson.fromJson(result, AccessorClass.class);

Работа выполнена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...