我有一个来自OMDb的json,就像这样:
{
"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"
}
我想提取每部电影并将其存储到List中,因此我创建了一个带有电影列表的MovieContainer类,其中包含一组字符串。
我用过
MovieContainer cnt=new Gson().fromJson(jstring, MovieContainer.class);
其中jstring是一个带有json的String,如上所述,但是当我尝试迭代Container中的List时,我得到一个NullPointerException。
由于我是Gson的初学者,我找不到原因,我该如何解析Json?
编辑:我知道NullPointerException是什么,但我不明白为什么Java会在我的例子中抛出它。
我的MovieContainer课程:
public class MovieContainer {
public List<Movie> movies;
}
我的电影课程:
public class Movie {
String Title;
String Year;
String Poster;
String imdbID;
String Type;
}
我认为fromJson方法应该使用与字段名称匹配的信息填充我的List,但List电影指向null。
答案 0 :(得分:0)
如果您想首先搜索标题,您需要在该数据中“搜索”,您需要迭代并查找标题。
因为您的Gson包含3个元素,“搜索”,“totalResults”和“响应”。
答案 1 :(得分:0)
您的MovieContainer类缺少其他两个字段,即totalResults和Response,它们也是json根对象的一部分。
这是一个让您起步并运行的快速示例。它基于您到目前为止提供的信息。
Movie.java
public class Movie {
private String Title;
private String Year;
private String imdbID;
private String Type;
private String Poster;
}
MovieContainer.java
public class MovieContainer {
private List<Movie> Search;
private String totalResults;
private String Response;
public static void main(String[] args) {
// Converts the json to the Java object a.k.a POJO ?!!!
deserialize();
}
private static void deserialize() {
String jstring = " { " +
" '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' " +
" } ";
Gson gson = new Gson();
MovieContainer searchResults = gson.fromJson(jstring, MovieContainer.class);
}
}
用于确认列表不为空的屏幕截图如下:-
现在可以参加聚会了!!! ?????