null pointer изключение-парсинг json с gson android 2.2

Вече разгледах подобен въпрос тук: null pointer exception-parsing json with gson android

Получавам същата грешка, но обектите ми са малко по-различни и се проваля само на android 2.2, но не и на android 2.3. Somme googling изглежда изглежда като известен 2.2 бъг, коригиран във 2.3. Но може би има заобиколно решение?

Ето кода:

NewsContainer newsContainer = gson.fromJson(response, NewsContainer.class);

json отговорът:

{"newsList":
{"group":
    {"news":
        {"news":
            {"ranking":"1","id":"NEWS-33713","type":"Fnac","title":"LAURENT GERARD, GERARD COMME ...","subtitle":"THEATRE DES MATHURINS","preview":"http:\/\/www.fnacspectacles.com\/static\/0\/visuel\/grand\/215\/LAURENT-GERARD_2159024664536169906.jpg?1325241781000","details":"LAURENT GERARD, GERARD COMME ...\nDu: 24\/01\/2012 au 30\/06\/2012","address":"36, rue des Mathurins 75008 PARIS","url":"http:\/\/ad.zanox.com\/ppc\/?21135664C184852886&ULP=[[\/place-spectacle\/manifestation\/Seul-en-scene-LAURENT-GERARD--GERARD-COMME-----RARD.htm]]","start_date":"2012-01-24 00:00:00","poi":                  {"latitude":"48.8731960","longitude":"2.3257960"}
            }
        }
    }
}

}

А ето и моите обекти:

public class NewsContainer {
private NewsList newsList;

public NewsContainer() {
    ;
}

private static class NewsList {
    List<NewsGroup> group;
}

public List<NewsGroup> getNewsList() {
    return newsList.group;
}

public void setNewsList(List<NewsGroup> newsList) {
    this.newsList.group = newsList;
}

}

public class NewsGroup implements Group{
private Long id;
private String title;
//    @Exclude
private List<News> news;

public List<News> getNews() {
    return news;
}

public NewsGroup() {
}

public void setNews(List<News> news) {
    this.news = news;
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

@Override
public List<? extends Item> getItems() {
    return news;
}

}

Включени са много повече обекти, но би било твърде дълго да го имаме тук. Попитайте дали трябва да видите някой от тях.

за разбирането


person Jean-Philippe    schedule 28.03.2012    source източник


Отговори (1)


В Gson обикновено използваме List ‹ T >, когато имаме работа с JSON масиви. От вашия JSON отговор виждам, че няма масиви (само обекти в обекти). Ако вашият списък с новини съдържа МНОГО групи, тогава JSON трябва да бъде като:

{"newsList":
    "group" : [{"news":  .... }, ... ]
}
person Rorchackh    schedule 28.03.2012
comment
Благодаря за вашият отговор ! Така че кажете ми, ако греша, но изглежда, че обектът gson очаква списък от групи, съдържащи списък с новини и т.н. и т.н., а json низът просто съдържа обекти. Така че, ако съм сигурен, че никога няма да получа масив, мога да променя обектите така, че да не съдържат списъци. Ако не, трябва да помоля разработчика на json webservice да промени отговора. Също така изглежда, че android 2.3 може да се справи сам с него. - person Jean-Philippe; 29.03.2012
comment
Да точно. JSON низът, който получавате, трябва да съответства на вашите частни класове (NewsGroup и NewsList). Обикновено трябва да можете да получите ясно описание на JSON обекта, така че да можете да моделирате тези класове след него. Можете също да промените самия JSON отговор, но това зависи от това дали уеб услугите се използват другаде. - person Rorchackh; 29.03.2012