Обобщение массива / списка Java gson - PullRequest
0 голосов
/ 09 марта 2012

Я пытаюсь десериализовать общий список с помощью Gson.Я могу десериализовать следующий JSON:

[{"updated_at":"2012-03-09T11:13:31Z","id":1,"title":"Moda","position":0,"short_name":"Md"},
{"updated_at":"2012-03-09T11:13:40Z","id":2,"title":"Sissi","position":1,"short_name":"SI"},
{"updated_at":"2012-03-09T11:13:47Z","id":3,"title":"Levis","position":2,"short_name":"LV"},
{"updated_at":"2012-03-09T11:14:03Z","id":4,"title":"Dolce&Gabanna","position":3,"short_name":"DG"}]

со следующим кодом:

T[] array = (T[])java.lang.reflect.Array.newInstance(p_class, 0);
gson.fromJson(content, array.getClass());

Но теперь у меня есть следующий JSON, который я не могу понять, какдесериализовать с помощью gson:

[{"brand":{"updated_at":"2012-03-09T11:13:31Z","id":1,"title":"Moda","position":0,"short_name":"Md"}},
{"brand":{"updated_at":"2012-03-09T11:13:40Z","id":2,"title":"Sissi","position":1,"short_name":"SI"}},
{"brand":{"updated_at":"2012-03-09T11:13:47Z","id":3,"title":"Levis","position":2,"short_name":"LV"}},
{"brand":{"updated_at":"2012-03-09T11:14:03Z","id":4,"title":"Dolce&Gabanna","position":3,"short_name":"DG"}}]

Спасибо за вашу помощь!

1 Ответ

4 голосов
/ 09 марта 2012

Вам необходимо создать новый класс с объектом с именем brand и типом p_class . Затем используйте gson для вашего нового класса, как вы делали раньше, и он должен вернуть вам массив вашего нового класса. например:

class Brand{
    private p_class brand;

    public p_class getBrand(){
        return brand;
    }
}

и для gson:

List<Brand> brands = (List<Brand>) gson.fromJson(content, new TypeToken<List<Brand>>(){}.getType());

другим способом было бы работать с обычными объектами json, доступными в платформе Android:

    JSONArray ar = new JSONArray(content);
    for(int i=0; i<ar.length(); i++){
        JSONObject obj = ar.getJSONObject(i);

        //here is your desired object
        p_class p = gson.fromJson(obj.getJSONObject("brand").toString(), p_class.class);
    }
...