Html, обработка ответа JSON

У меня есть страница, которая возвращается как UnexpectedPage в HtmlUnit, ответ - JSON. Могу ли я использовать HTMLUnit для анализа или мне понадобится дополнительная библиотека?


person benstpierre    schedule 28.05.2010    source источник


Ответы (2)


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. Вы можете найти пример в этом ответе.

person BalusC    schedule 28.05.2010

BalusC предоставил хороший ответ, но чтобы ответить на буквальный вопрос, вам действительно не нужна дополнительная библиотека: вы можете использовать аккуратный встроенный JsonSlurper Groovy, например:

 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}'
person Tomislav Nakic-Alfirevic    schedule 11.10.2020