【发布时间】:2012-03-17 14:23:00
【问题描述】:
我正在尝试用 Jackson 替换 groovy/grails 项目中的自定义 JSON(反)序列化。
我无法让 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,其中的键似乎是随机顺序的。 我尝试使用 TreeMap 更改“mymap”的类型,在这种情况下,所有键都按预期正确排序。
我想知道是否有一种方法可以在不将上面的“mymap”更改为 TreeMap(并递归地更改其所有映射值...)的情况下对键进行排序。
SORT_PROPERTIES_ALPHABETICALLY 似乎正是为了做到这一点,但由于某种原因它没有这样做。 你知道这是为什么吗?上面有什么我做错了吗?
我尝试过使用 Jackson 1.8.3、1.8.8 和 1.9.5,结果相同(随机键)。
【问题讨论】:
标签: json grails groovy jackson