У меня есть страница, которая возвращается как UnexpectedPage в HtmlUnit, ответ - JSON. Могу ли я использовать HTMLUnit для анализа или мне понадобится дополнительная библиотека?
Html, обработка ответа JSON
Ответы (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