Я пытаюсь заменить пользовательскую сериализацию JSON (de) в проекте 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, похоже, предназначен именно для этого, но по какой-то причине он этого не делает.
Знаете ли вы, почему это так? Что-то я не так делаю выше?
Я пробовал с Джексоном 1.8.3, 1.8.8 и 1.9.5, тот же результат (случайные ключи).