Как конвертировать компактный Json в кодовое название
Я хочу знать, как преобразовать строку компактного Json в красивую печать, чтобы я мог ее разобрать. Я искал этот вопрос в переполнении стека, но, похоже, никто не спрашивал его по коду. Прямо сейчас у меня есть строка компактного Json, но она не может быть проанализирована. Это код:
String JsonData = "{\"document\":{ \"type\":\"PLAIN_TEXT\", \"content\":\"Ask not what your country can do for you, ask what you can do for your country.\" },\"encodingType\":\"UTF8\"}";
JsonResponse = Rest.
post("https://language.googleapis.com/v1/documents:analyzeSyntax?key=[API KEY").
jsonContent().
body(JsonData).
getAsJsonMap();
String JsonString = (JsonResponse.getResponseData()).toString();
JSONParser parser = new JSONParser();
Map<String, Object> results = null;
try {
results = parser.parseJSON(new StringReader(JsonString));
} catch (IOException e) {
e.printStackTrace();
System.out.println("fail");
}
System.out.println("results "+results);
Но когда я запускаю этот код, я получаю кучу таких ответов:
[EDT] 0:0:3,269 - Expected null for key value while parsing JSON token at row: 1 column: 5 buffer: e
а также
java.lang.NumberFormatException: For input string: "ee0"
Как мне преобразовать мою строку компактного Json (JsonString) в красивую печать, чтобы я мог ее проанализировать? В качестве альтернативы, есть ли способ прямого анализа ответа (JsonResponse)? Благодарю вас
1 ответ
Вы распечатываете карту, а не строку JSON, поскольку данные JSON уже проанализированы. Если вы просто хотите посмотреть на сетевой протокол для отладки, лучший способ сделать это - открыть Network Monitor
в симуляторе, где вы увидите все HTTP-запросы и сможете скопировать тело ответа JSON.
Однако вы все еще можете конвертировать Map
вернуться к JSON, используя:
Log.p("results " + JSONParser.mapToJson(results));
Обратите внимание, что вы должны использовать Log.p()
а также Log.e()
регистрировать строки / исключения, так как это будет работать лучше на устройствах.