Подтвердить что ты не робот

Как я могу печатать существующие данные JSON с Java?

У меня есть компактная строка JSON, и я хочу хорошо ее отформатировать на Java без необходимости ее десериализации сначала. точно так же, как jsonlint.org. Есть ли там библиотеки, которые обеспечивают это?

Аналогичное решение для XML также будет приятным.

4b9b3361

Ответ 1

Я думаю, что для довольно-печатания что-то очень полезно знать его структуру.

Чтобы получить структуру, вы должны разобрать ее. Из-за этого я не думаю, что это становится намного проще, чем сначала разбирать строку JSON, которая у вас есть, а затем использовать метод довольно печати toString, упомянутых в комментариях выше.

Конечно, вы можете сделать подобное с любой библиотекой JSON, которая вам нравится.

Ответ 2

int spacesToIndentEachLevel = 2;
new JSONObject(jsonString).toString(spacesToIndentEachLevel);

Использование org.json.JSONObject (встроено в JavaEE и Android)

Ответ 3

В одной строке:

String niceFormattedJson = JsonWriter.formatJson(jsonString)

или

System.out.println(JsonWriter.formatJson(jsonString.toString()));

json-io libray (https://github.com/jdereg/json-io) представляет собой небольшую (75K) библиотеку без каких-либо других зависимостей, чем JDK.

В дополнение к довольно-печатной JSON вы можете сериализовать объекты Java (целые диаграммы объектов Java с циклами) в JSON, а также прочитать их.

Ответ 5

Если вы используете jackson, вы можете легко достичь этого с помощью настройки SerializationFeature в ObjectMapper:

com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();

mapper.configure(SerializationFeature.INDENT_OUTPUT, true);

mapper.writeValueAsString(<yourObject>);

Вот оно.

Ответ 6

Другой способ использования gson:

String json_String_to_print = ...
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser jp = new JsonParser();
return gson.toJson(jp.parse(json_String_to_print));

Его можно использовать, когда у вас нет bean, как в сообщении susemi99.

Ответ 7

У меня очень простое решение:

<dependency>
    <groupId>com.cedarsoftware</groupId>
    <artifactId>json-io</artifactId>
    <version>4.5.0</version>
</dependency>

Код Java:

import com.cedarsoftware.util.io.JsonWriter;
//...
String jsonString = "json_string_plain_text";
System.out.println(JsonWriter.formatJson(jsonString));