Html,处理JSON响应

时间:2010-05-28 22:15:09

标签: java json htmlunit

我有一个页面在HtmlUnit中作为UnexpectedPage返回,响应是JSON。我可以使用HTMLUnit来解析这个吗?还是需要一个额外的库?

2 个答案:

答案 0 :(得分:18)

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。您可以在this answer中找到一个示例。

答案 1 :(得分: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}'