需要的Maven依赖如下:
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
<!-- json-lib提供了两个jdk版本的实现, json-lib-2.4-jdk13.jar和json-lib-2.4-jdk15.jar -->
</dependency>
相关的Jar包如下:
json-lib是Java之前常用的一个Json库,最新的版本为2010年更新的2.4。
json-lib 在通过字符串解析每一个 Json 对象时,会对当前解析位置到字符串末尾进行 substring 操作,由于 JDK7 及以上的 substring 会完整拷贝截取后的内容,所以当遇到较大的 Json 数据并且含有较多对象时,会进行大量的字符数组复制操作,导致了大量的 CPU 和内存消耗,甚至严重的 Full GC 问题。
net.sf.json.JSONObject转成HashMap
package com.cn.demo.controller;
import java.util.HashMap;
import java.util.Iterator;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import net.sf.json.JSONObject;
@RestController
@RequestMapping("/api")
public class TestController {
@SuppressWarnings("unchecked")
public static HashMap<String, String> JsonToMap(JSONObject jsonObject) {
HashMap<String, String> map = new HashMap<String, String>();
Iterator<String> iterator = jsonObject.keys();
String key = null;
String value = null;
while (iterator.hasNext()) {
key = iterator.next();
value = jsonObject.getString(key);
map.put(key, value);
}
return map;
}
@RequestMapping("/jsonToMap")
public HashMap<String, String> transMap(){
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", "129");
jsonObject.put("name", "lmq");
jsonObject.put("age", "21");
System.out.println(jsonObject);
HashMap<String, String> map = JsonToMap(jsonObject);
System.out.println(map);
return map;
}
}
控制台输出: