【问题标题】:Html, handling a JSON responseHtml,处理 JSON 响应
【发布时间】:2010-05-28 22:15:09
【问题描述】:

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

【问题讨论】:

    标签: java json htmlunit


    【解决方案1】:

    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 中找到示例。

    【讨论】:

      【解决方案2】:

      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}'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-15
        • 2020-05-14
        • 2019-04-29
        • 1970-01-01
        相关资源
        最近更新 更多