技术共享

java: 将json字符串转换为Map对象,如何保证其顺序不变.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

大家都知道Map对象的LinkedHashMap是有序的,但它的顺序只能保证录入的顺序, 如果我们是将json字符串用JSONObject转换为json对象,并强转为LinkedHashMap,即便使用了有序map, 结果还是无序的.那是因为我们在从字符串转换为json对象时,已经是无序了. 解决无序问题,我们只能从转换为json对象入手, 当json对象时有序的,那么强转成LinkedHashMap也是有序的.

实现:
引入pom文件

 <dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-databind</artifactId>
     <!--<version>2.17.1</version> 如果启动报错,可能有版本冲突,将版本号注释掉再试一下: 与jwt版本冲突-->
 </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

封装方法:

/**
	有序的json转换
	字符串转换为LinkedHashMap
*/
public static Map<String,Object> toLinkedHashMap(String json) throws IOException{
	ObjectMapper mapper = new ObjectMapper();
	Map<String,Object> rmap = mapper.readValue(json, new TypeReference<LinkedHashMap<String,Object>(){});
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8