Jackson Object mapper将java地图转换为json维护键的顺序
发布时间:2020-12-15 00:40:17 所属栏目: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的一个实现,它保存了键插入到地图中的顺序.这可能是你正在寻找的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |