(JSON转换)String与JSONObject、JSONArray、JAVA对象和List 的相互转换
import com.alibaba.fastjson.JSONObject;
一、图解(使用的FastJSON工具库)
二、详解(以 String与对象相互转换 为例)
1、JSONString 与 JSONObject 相互转化
(1)JSONString == > JSONObject
String jsonStr = "{\"key1\":\"value1\"}"; // 反斜杠是java中用于转义特殊字符 " 的JSONObject jsonObject = JSON.parseObject(jsonStr);
(2)JSONObject ==> JSONString
String jsonStr = jsonObject.toJSONString();
2、JSONString 与 JAVA对象 相互转化
(1)JSONString ==> JAVA对象
// 反斜杠是java中用于转移特殊字符 " 的String jsonStr = "{\"name\":\"张三\"}";User user = JSON.parseObject(jsonStr, User.class);
**(2) JAVA对象 ==> JSONString **
String jsonStr = JSON.toJSONString(user);
三、扩展
1、泛型的反序列化(使用 TypeReference 传入类型信息)
Map<String, Object> map = new HashMap<String, Object>();map.put("key1", "One");map.put("key2", "Two");// 转 JSONStringString mapJson = JSON.toJSONString(map); // 泛型反序列化Map<String, Object> map = JSON.parseObject(mapJson, new TypeReference<Map<String, Object>>(){});
//List转JSONStringList<String> ids = Arrays.stream("1,2,3".split(",")).collect(Collectors.toList());JSONObject json = new JSONObject();json.put("ids", ids);String jsonString = json.toJSONString();//JSONString转List//1.泛型反序列化JSONObject jsonObject = JSONObject.parseObject(jsonString);List<String> objectIds = JSONObject.parseObject(jsonObject .getString("ids"), new TypeReference<List<String>>(){});//2.JSONObject.parseArrayList<String> arrayIds = JSONObject.parseArray(jsonObject .getString("ids"), String.class);
四、其他
1、把对象,list转成json:
Object obj = new Object();String objJson = JSONObject.toJSONString(obj);List<Object> list = new ArrayList<>();String listJson = JSONObject.toJSONString(list);
2、json对象再转成对象或者list
Object obj = JSONObject.parseObject(headJson, Object .class);List<Object> offList = JSONObject.parseArray(offListJson, Object.class);
3、JSONArray转换
1.List转JSONArray
List<T> list = new ArrayList<T>();JSONArray array= JSONArray.parseArray(JSON.toJSONString(list));
2.JSONArray转List
JSONArray array = new JSONArray();List<EventColAttr> list = JSONObject.parseArray(array.toJSONString(), EventColAttr.class);
3.String转JSONArray
String st = "[{name:Tim,age:25,sex:male},{name:Tom,age:28,sex:male},{name:Lily,age:15,sex:female}]";JSONArray tableData = JSONArray.parseArray(st);
博客:
【String与JSONObject、JSONArray、JAVA对象和List 的相互转换】