我想从OMDB API获取电影数据,这是JSON文本。我使用Java来解码这个和JSON-simple包。
我要解码的网址例如:http://www.omdbapi.com/?t=icarus
结果(直接复制和粘贴,不是结构化):
{"名称":"伊卡洛斯""年份":" 2010""额定":& #34; TV-14","发布":" 2010年12月10日","运行时":" 42分钟",& #34;类型":"冒险,戏剧,浪漫","导演":" Mairzee Almas","作家":& #34; Alfred Gough(创作者),Jerry Siegel(角色创作者:超人),Miles Millar(创作者),Joe Shuster(角色创作者:超人),Alfred Gough(为电视开发),Miles Millar(为电视开发) by),Genevieve Sparling",#34; Actors":" Tom Welling,Erica Durance,Cassidy Freeman,Justin Hartley"," Plot":"随着VRA威胁的加剧,Clark主动关闭了了望塔并宣布联盟正式进入地下,但这足以阻止小跑步和斯莱德威尔逊...","语言":& #34;英语""国家":"美国""与获奖#34;:" N / A""海报":" http://ia.media-imdb.com/images/M/MV5BMjIwNDQ2MjM5OV5BMl5BanBnXkFtZTcwODU4NzU0NA@@._V1_SX300.jpg"" Metascore&#3 4;:" N / A"" imdbRating":" 8.6"" imdbVotes":" 367" " imdbID":" tt1628582""类型":"插曲""响应":"真"}
我的按钮下的代码:
String url = "http://www.omdbapi.com/?t=" + jListFilms.getSelectedValue().toString();
try {
JSONParser parser = new JSONParser();
Object obj = parser.parse(url);
JSONObject jsonObj = (JSONObject) obj;
String title = (String) jsonObj.get("Title") ;
System.out.println(title);
} catch (ParseException e){
System.out.println(e);
}
当我打印出变量 title
时位置0处的意外字符(h)。
有谁知道为什么我不能获得电影的标题?
答案 0 :(得分:1)
你的代码正在做的是解析字符串URL,它开始" http://",因此h位于0。
您需要在该URL发出HTTP GET请求才能获得JSON。
答案 1 :(得分:1)
感谢Adam带领我走向正确的方向。我现在使用的是InputStream和Google Gson而不是JSON.Simple。
现在这是我的代码,它的工作原理我希望它可以工作。
try {
String selectedItem = jListFilms.getSelectedValue().toString().replace("\\s+", "+");
InputStream input = new URL("http://www.omdbapi.com/?t=" + URLEncoder.encode(selectedItem, "UTF-8")).openStream();
Map<String, String> map = new Gson().fromJson(new InputStreamReader(input, "UTF-8"), new TypeToken<Map<String, String>>(){}.getType());
String title = map.get("Title");
String year = map.get("Year");
String released = map.get("Released");
String runtime = map.get("Runtime");
String genre = map.get("Genre");
String actors = map.get("Actors");
String plot = map.get("Plot");
String imdbRating = map.get("imdbRating");
String poster = map.get("Poster");
testForm tf = new testForm(title, year, released, runtime, genre, actors, plot, imdbRating);
tf.setVisible(true);
} catch (JsonIOException | JsonSyntaxException | IOException e){
System.out.println(e);
}