Я предлагаю немного другой путь, то есть используйте собственный сериализатор, как указано здесь .
Это сводится к тому, чтобы иметь свой собственный
public static class MgetSerializer extends JsonSerializer<Mget> {
Который работает, например, для List.
Дело в том, что я бы не стал «смешивать» вещи, как: имея решение, в котором ваш код записывает часть вывода, а Джексон создает прочее частей на выходе. Вместо этого позвольте Джексону делать именно то, что вы хотите.
Помимо этого, я считаю, что весь подход немного сомнительный. Строки JSON не заботятся о новых строках. Так что, если вам интересно, как все отформатировано, лучше посмотрите на инструменты, которые вы используете, чтобы посмотрел на ваш JSON.
Значение: зачем тратить свое время на форматирование строки, которая не означала бы для непосредственного потребления человеком в первую очередь? Консоли браузера покажут вам строки JSON в сложенном виде, и любой приличный редактор имеет подобные возможности в наши дни.
Другими словами: я думаю, вы вкладываете свою энергию не в то место. JSON - это транспортный формат, и вам следует беспокоиться только о контенте , который вы хотите передать, а не в (по сути, бессмысленные эффекты форматирования).