我正在尝试用 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)
但 Jackson 顽固地生成一个 JSON,其中密钥似乎是随机顺序的。
我尝试使用 TreeMap 更改“mymap”的类型,在这种情况下,所有键都按预期正确排序。
我想知道是否有办法对键进行排序without将上面的“mymap”更改为 TreeMap(并递归地更改其所有地图值...)。
SORT_PROPERTIES_ALPHABETICALLY 似乎就是为了做到这一点,但由于某种原因它没有这样做。
你知道这是为什么吗?我上面做错了什么吗?
我尝试过 Jackson 1.8.3、1.8.8 和 1.9.5,结果相同(随机密钥)。
正如 @tim_yates 所说,这不适用于地图键。
你可以使用
mapper.configure(SerializationConfig.Feature.ORDER_MAP_ENTRIES_BY_KEYS, true)
在较新的版本 (>= 2.6.1) 中,API 更改为:
mapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)