Как конвертировать компактный 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() регистрировать строки / исключения, так как это будет работать лучше на устройствах.

Другие вопросы по тегам