【发布时间】:2014-02-17 09:01:37
【问题描述】:
我正在使用jackson.map.ObjectMapper API 将地图转换为 json 字符串。我正在使用 writeValueAsString 方法来实现这一点。
我将根据值排序的映射传递给writeValueAsString 方法。我得到的 JSON 字符串是基于键的。
有没有办法使用杰克逊将地图转换为 JSON 字符串,而不会干扰地图中项目的顺序。
我尝试将 Feature.SORT_PROPERTIES_ALPHABETICALLY 设置为 false,但根据文档,它仅适用于 POJO 类型。
实现上述行为的任何想法。
【问题讨论】:
-
通用映射不能保证键的顺序,所以我不明白你怎么能做到这一点。
-
您需要确保您使用的地图可以维护插入顺序,即 TreeMap 而不是 HashMap。
-
我只使用了 Treemmap 并且值按我想要的方式排序。但是,一旦我将我的树图(实际上是一个包含所有树图的对象)传递给 Jackson API 以获取 JSON 字符串,我的所有地图值都会根据键进行处理。
-
如果我错了,请纠正我,但我不知道有什么方法可以正确创建按与 java SortedMap 接口规范完全兼容的值排序的 Map。一对 SortedSet 就可以了。但是地图会出错。仅更新此类地图上的值就可以阻止一切。比较值的 Comparator
也违反了一些规则!请考虑使用 SortedSet of Pairs。