Zor*_*mic 14 grails groovy json jackson
我正在尝试用Jackson替换groovy/grails项目中的自定义JSON(de)序列化.
我很难让杰克逊输出一个漂亮的JSON,其中的键按照简单的"自然"字母顺序排序.我试过这个(和许多变化):
mymap = [ ... ] // Some groovy map
def mapper = new ObjectMapper()
mapper.configure(SerializationConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY, true)
def jsonstring = mapper.defaultPrettyPrintingWriter().writeValueAsString(mymap)
Run Code Online (Sandbox Code Playgroud)
但杰克逊顽固地生成一个JSON,其中键似乎是随机顺序.我尝试用TreeMap更改'mymap'的类型,在这种情况下,所有键都按预期正确排序.
我想知道是否有一种方法可以在不将上面的'mymap'更改为TreeMap的情况下对键进行排序(并递归地将其所有的映射值...).
SORT_PROPERTIES_ALPHABETICALLY似乎是为了做到这一点,但由于某种原因它没有这样做.你知道为什么吗?我上面做错了什么?
我试过Jackson 1.8.3,1.8.8和1.9.5,结果相同(随机键).
bkn*_*per 19
正如@tim_yates所述,这对地图键不起作用.
你可以用
mapper.configure(SerializationConfig.Feature.ORDER_MAP_ENTRIES_BY_KEYS, true)
Run Code Online (Sandbox Code Playgroud)
对于较新的版本(> = 2.6.1),API更改为:
mapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9836 次 |
最近记录: |