2016-12-29 3 views
-7

У меня есть JSON получил от OMDb, как это:Разбираем сложный JSon объект с Gson

{ 
"Search": 
    [{"Title":"Seven Pounds", 
     "Year":"2008", 
     "imdbID":"tt0814314", 
     "Type":"movie", 
     "Poster":"someUrl"}, 
    {"Title":"Seven Samurai", 
     "Year":"1954", 
     "imdbID":"tt0047478", 
     "Type":"movie", 
     "Poster":"someUrl"} 
    ],"totalResults":"1048", 
    "Response":"True" 
} 

Я хотел бы, чтобы извлечь каждый фильм и сохранить его в список, так что я создал класс MovieContainer со списком Фильм, который содержит набор строк.

Я использовал

MovieContainer cnt=new Gson().fromJson(jstring, MovieContainer.class); 

где jstring является строка с JSON, как показано выше, но когда я пытаюсь перебрать список в контейнер я получаю NullPointerException.

Поскольку я новичок в Gson, я не могу понять, почему, как мне разобрать Json?

EDIT: Я знаю, что такое NullPointerException, но я не понимаю, почему Java выбрасывает его в моем примере.

Мой класс MovieContainer:

public class MovieContainer { 
    public List<Movie> movies; 
} 

Мой класс фильм:

public class Movie { 
    String Title; 
    String Year; 
    String Poster; 
    String imdbID; 
    String Type; 
} 

Я думаю, что метод fromJson должен заполнить свой список с информацией, совпадающим с именем поля, но список фильмов указывает на нулевое значение ,

+2

Возможный дубликат [Что такое исключение NullPointerException и как его исправить?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) –

+1

Пожалуйста, отредактируйте свой вопрос, чтобы включить [mcve]. –

+0

Научитесь читать JSON (перейдите на json.org). Самый внешний объект - это словарь с одним элементом с именем «Поиск». –

ответ

0

Если вы хотите сначала искать заголовки, вам необходимо получить «Поиск» внутри этих данных, которые вам нужны для повторения и поиска названий.

Поскольку ваш Gson содержит 3 элемента, «Поиск», «totalResults» и «Response».