Форматирование JSON перед записью в файл

В настоящее время я используюJSON JSON Processor записывать данные о предпочтениях и прочее в файлы главным образом потому, что я хочу, чтобы опытные пользователи могли изменять / резервировать эти данные. Джексон хорош для этого, потому что он невероятно прост в использовании и, очевидно, работает достойно (см.Вот), однако единственная проблема, с которой я, похоже, сталкиваюсь, это когда я бегуmyObjectMapper.writeValue(myFile, myJsonObjectNode) он записывает все данные вObjectNode до одной строки. Я хотел бы отформатировать JSON в более удобный для пользователя формат.

Например, если я передам ему простое дерево json, оно напишет следующее:

{"testArray":[1,2,3,{"testObject":true}], "anotherObject":{"A":"b","C":"d"}, "string1":"i'm a string", "int1": 5092348315}

Я хотел бы, чтобы это отображалось в файле как:

{
    "testArray": [
        1,
        2,
        3,
        {
            "testObject": true
        }
    ],
    "anotherObject": {
        "A": "b",
        "C": "d"
    },
    "string1": "i'm a string",
    "int1": 5092348315
}

Кто-нибудь знает, как я могу сделать это с Джексоном, или мне нужно получить строку Джексона от Джексона и использовать стороннюю библиотеку для ее форматирования?

Заранее спасибо!

Ответы на вопрос(4)

следующее:

ObjectMapper myObjectMapper = new ObjectMapper();
myObjectMapper.enable(SerializationFeature.INDENT_OUTPUT);
myObjectMapper.writeValue(myFile, myJsonObjectNode)

source:https://github.com/FasterXML/jackson-databind

Решение Вопроса

 ObjectWriter writer = mapper.defaultPrettyPrintingWriter();
 Brandon13 июн. 2012 г., 07:06
...Вот это да. Я думал, что тщательно искал javadocs каждой функции в ObjectMapper. Я не могу поверить, что пропустил это. И я на самом деле не мог найтиmapper.defaultPrettyPrintingWriter() но нашел это на самом деле какmapper.writerWithDefaultPrettyPrinter(), Спасибо за помощь!
 Brandon13 июн. 2012 г., 07:08
Несовпадение функций может быть связано с разными версиями. Я использую Jackson 2.0.2.
 14 мар. 2013 г., 14:15
mapper.defaultPrettyPrintingWriter() на самом деле не рекомендуется в Jackson 1.9.2

ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
mapper.writeValue(myFile, myJsonObjectNode);

о,

     Object json = mapper.readValue(content, Object.class);
     mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json); 

кудаcontent ваш строковый ответ JSON

Джексон версия: 2.12

Ваш ответ на вопрос