Я пытаюсь заменить пользовательскую (де)сериализацию JSON в проекте groovy/grails с помощью Jackson. .
У меня не получается заставить Джексона выводить красиво напечатанный JSON с ключами, отсортированными в простом «естественном» алфавитном порядке. Я пробовал это (и много вариантов):
mymap = [ ... ] // Some groovy map
def mapper = new ObjectMapper()
mapper.configure(SerializationConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY, true)
def jsonstring = mapper.defaultPrettyPrintingWriter().writeValueAsString(mymap)
Но Джексон упрямо генерирует JSON, где ключи кажутся в случайном порядке. Я попытался изменить тип mymap с помощью TreeMap, и в этом случае все ключи правильно отсортированы, как и ожидалось.
Мне интересно, есть ли способ отсортировать ключи безизменения 'mymap' выше на TreeMap (и рекурсивно все его значения карты...).
SORT_PROPERTIES_ALPHABETICALLY, кажется, предназначен именно для этого, но по какой-то причине он этого не делает. Вы знаете, почему это так? Что-нибудь я делаю неправильно выше?
Пробовал с Jackson 1.8.3, 1.8.8 и 1.9.5, тот же результат (случайные ключи).