我有一个页面作为 HtmlUnit 中的 UnexpectedPage 返回,响应是 JSON。我可以使用 HTMLUnit 来解析它还是需要一个额外的库?
问问题
10184 次
2 回答
21
HtmlUnit 不支持它。它最多可以执行一个JS函数。您需要事先检查Content-Type
返回的响应是否匹配application/json
,然后使用合适的工具对其进行解析。Google Gson在这方面很有用。
WebClient client = new WebClient();
Page page = client.getPage("https://stackoverflow.com/users/flair/97901.json");
WebResponse response = page.getWebResponse();
if (response.getContentType().equals("application/json")) {
String json = response.getContentAsString();
Map<String, String> map = new Gson().fromJson(json, new TypeToken<Map<String, String>>() {}.getType());
System.out.println(map.get("displayName")); // Benju
}
如果事先知道 JSON 结构,您甚至可以使用 Gson 将其转换为完全有价值的 Javabean。你可以在这个答案中找到一个例子。
于 2010-05-28T23:31:54.320 回答
0
BalusC 提供了一个很好的答案,但要回答字面意思的问题,您实际上并不需要额外的库:您可以使用 Groovy 简洁的内置 JsonSlurper,例如:
def jsonSlurper = new groovy.json.JsonSlurper()
def parsed = jsonSlurper.parseText(response.getContentAsString())
println("Found ${parsed.TotalCount} records.");
打印出1
响应,例如
'{"Records":[{"ID":"123","Address":"Zagreb",],"TotalCount":1}'
于 2020-10-11T10:17:00.387 回答