JSON对象、字符串之间的相互转换
说明:此处的转换是基于fastjson 的
一、准备工作
添加依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
二、转换方法介绍
1. JSON字符串转JSON对象
// JSON 字符串
String jsonStr = "{\"code\":0,\"msg\":\"success\",\"data\":3}";
// 转json对象
JSONObject jsonObject = JSON.parseObject(jsonStr);
2. JSON对象转JSON字符串
JSONObject jsonObject = new JSONObject();
// 转成字符串
String jsonStr = jsonObject.toJSONString();
3. 字符串数组转JSONArray对象
String jsonStrArr = "[{\"code\":0,\"msg\":\"success\",\"data\":3},{\"code\":0,\"msg\":\"success\",\"data\":3}]";
// json字符串数组--> JSONArray
JSONArray jsonArray = JSON.parseArray(jsonStrArr);
// 遍历JSONArray
for (Object o : jsonArray) {
JSONObject jsonObject = (JSONObject) o;
}
【注】:字符串数组类型不可直接转JSONObject,不然会报错。
4. JSONArray转字符串
JSONArray jsonArray = new JSONArray();
String strArr = jsonArray.toJSONString();
5. JSON字符串与java对象之间的转换
-
字符串 转 Java对象
public class ReponseObj { int code; String msg; String data; } String jsonStr = "{\"code\":0,\"msg\":\"success\",\"data\":\"3\"}"; // 方法1 ReponseObj reponseObj = JSON.parseObject(jsonStr,ReponseObj.class); // 方法2 (推荐) // JSON字符串与JavaBean之间的转换建议使用TypeReference<T> 类 ReponseObj reponseObj = JSON.parseObject(jsonStr, new TypeReference<ReponseObj>(){});
-
Java 对象 转 JSON字符串
ReponseObj reponseObj = new ReponseObj(); String jsonStr = JSON.toJSONString(reponseObj);
-
字符串数组 转 Java对象
String jsonStrArr = "[{\"code\":0,\"msg\":\"success\",\"data\":\"3\"},{\"code\":0,\"msg\":\"success\",\"data\":\"3\"}]"; ArrayList<ReponseObj> list = JSON.parseObject(jsonStr, new TypeReference<ArrayList<ReponseObj>>(){});
6. Java 对象与JSON对象之间的相互转换
-
java 对象 转 json对象
String jsonStr = JSON.toJSONString(reponseObj); JSONObject jsonObj = JSON.parseObject(jsonStr);
-
json对象 转 Java对象
// 方法1 先转换为json字符串,再使用parseObject String jsonStr = jsonObj.toJSONString(); ReponseObj reponseObj = JSON.parseObject(jsonStr,new TypeReference<ReponseObj>() {}); // 方法2 直接使用toJavaObject Student stu = JSON.toJavaObject(jsonObj, ReponseObj.class);