Jackson Object mapper将java地图转换为json维护键的顺序
发布时间:2020-05-28 15:03:35 所属栏目:Java 来源:互联网
导读:我使用jackson.map.ObjectMapper API将map转换为json字符串.我使用writeValueAsString方法来实现这一点. 我传递了一个基于值排序的map到writeValueAsString方法.我得到的JSON字符串是基于键的. 有没有办法使用jackson将地图转换为JSON字符串,而不会干扰地图中
|
我使用jackson.map.ObjectMapper API将map转换为json字符串.我使用writeValueAsString方法来实现这一点. 我传递了一个基于值排序的map到writeValueAsString方法.我得到的JSON字符串是基于键的. 有没有办法使用jackson将地图转换为JSON字符串,而不会干扰地图中项目的顺序. 我尝试将Feature.SORT_PROPERTIES_ALPHABETICALLY设置为false,但根据文档,它仅适用于POJO类型. 任何想法实现上述行为. 解决方法使用Jackson 2.3.1(不知道以前的版本)你可以序列化一个SortedMap,例如一个TreeMap,该命令将得到尊重.以下是junit 4的示例: @Test
public void testSerialize() throws JsonProcessingException{
ObjectMapper om = new ObjectMapper();
om.configure(SerializationFeature.WRITE_NULL_MAP_VALUES,false);
om.configure(SerializationFeature.INDENT_OUTPUT,true);
om.setSerializationInclusion(Include.NON_NULL);
SortedMap<String,String> sortedMap = new TreeMap<String,String>();
Map<String,String> map = new HashMap<String,String>();
map.put("aaa","AAA");
map.put("bbb","BBB");
map.put("ccc","CCC");
map.put("ddd","DDD");
sortedMap.putAll(map);
System.out.println(om.writeValueAsString(map));
System.out.println(om.writeValueAsString(sortedMap));
}
这是结果:` 用地图 {
"aaa" : "AAA","ddd" : "DDD","ccc" : "CCC","bbb" : "BBB"
}
使用SortedMap {
"aaa" : "AAA","bbb" : "BBB","ddd" : "DDD"
}
` 带有Map的第一个序列化将不会被订购, 编辑:即使这不是SortedMap,它也可以在Jackson上使用LinkedHashMap().这是Map的一个实现,它保存了键插入到地图中的顺序.这可能是你正在寻找的. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
