java - 嵌套 JSON 的问题
问题描述
我们做了什么?我们正在使用电影 API 进行考试,我们正在获取 JSON。我们尝试手动提取“内部”JSON 部分,因为我们的方法运行良好。我们正在正确获取所有数据。我们使用 GSON 对其进行了转换。但它是一个嵌套的 JSON。我们已经尝试了这里和其他来源的几种方法,以及嵌套 JSON。我们只想从中得到“结果”部分。我们的准则有什么问题?这可能只是一个小错误,但我们无法弄清楚。
public void test() {
int status = 0;
String inputLine = "";
System.out.println("Test Methode");
try {
String name = " The Italien Job";
URL url = new URL("https://api.themoviedb.org/3/search/movie?"
+ "api_key=/Notforyou:D/language=en-US&"
+ "query=Spirited%20Away&page=1&include_adult=false");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
status = con.getResponseCode();
System.out.println("Status " + status);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
System.out.println("Ausgabe 1 " + inputLine);
if (status == 200) {
System.out.println("Ausgabe 2 " + inputLine);
//Gson gson = new Gson();
//List<Film> filme = gson.fromJson(inputLine.toString(), List.class);
Type listType = new TypeToken<ArrayList<Film>>(){}.getType();
List<Film> yourClassList = new Gson().fromJson(inputLine, listType);
System.out.println("Anzahl Filme " + yourClassList.size());
} else {
System.out.println("Fehler in dem Request");
}
}
in.close();
con.disconnect();
} catch (MalformedURLException ex) {
Logger.getLogger(theMovieDB.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(theMovieDB.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
编辑:Json。我们想要内部。在“结果”之后。请忽略引号。我只是快速输入。
{
„page“ : 1,
„total_results“:1,
„total_pages“:1,
„results“:[
{
„vote_count“:5511,
„id“:129,
„video“: false,
„vote_average“:8.5,
„title“:"Spirited Away",
„popularity“: 24.739224,
„original_language“:“ja“,
„release_date“: „2001-07-20“
}
]
}
我希望有人能帮忙。谢谢^^
解决方案
您需要首先从包含所有电影的 JSON 响应中获取结果JSONArray,并且还需要将其转换为电影列表。
可以使用以下代码实现:
JsonObject jsonObject = (new JsonParser())
.parse(content.toString().trim()).getAsJsonObject();
JsonArray films = ((JsonArray) jsonObject.get("results"));
Type listType = new TypeToken<ArrayList<Film>>(){}.getType();
List<Film> yourClassList = new Gson().fromJson(films, listType);
推荐阅读
- java - 通过我的应用在 Facebook 上请求好友
- python - 在 Mac 上安装 PyDrive
- java - 有没有办法为休眠生成的实体关闭@GenericGenerator?
- android - 如果我没有 json,如何创建 POJO?
- python - 错误的 UDP 校验和无效:为什么?
- ios - Apple Page Control 示例代码给出黑屏
- git - 在 Xcode / Git 中删除提交
- eclipse - Module-info.java 不会在 maven 项目中编译(令牌“模块”上的语法错误,需要接口)
- lua - 如何在此代码中实现去抖动
- c# - Nopcommerce - 自定义付款方式的 PostProcessPayment 未重定向到付款网关 URL