Сериализованный JSON с отсортированными ключами с использованием Jackson

Я пытаюсь заменить пользовательскую (де)сериализацию 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, тот же результат (случайные ключи).

14
задан Zoran Simic 28 February 2012 в 06:48
поделиться