FastJson简单使用
概述:
Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
Fastjson 可以操作任何Java对象,即使是一些预先存在的没有源码的对象。
** 个人觉得最大的特点就是可以忽略包名位置进行序列化,在实际应用中,在跨项目的序列化传输中十分好用。**
特点:
提供服务器端、安卓客户端两种解析工具,性能表现较好。
提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。
调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。
允许转换预先存在的无法修改的对象(只有class、无源代码)。
Java泛型的广泛支持。
允许对象的自定义表示、允许自定义序列化类。支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型) 。
可以在序列化时忽略对象的包名位置,获取其内容。
使用:
导入依赖:
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
对象序列化:
/**创建实体类ResultJson,属性与提供jsonString中的key保持一致
*/
public class ResultJson {
private String status;
private String message;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public ResultJson() {
super();
}
public ResultJson(String status, String message) {
super();
this.status = status;
this.message = message;
}
@Override
public String toString() {
return "ResultJson [status=" + status + ", message=" + message + "]";
}
}
import com.alibaba.fastjson.JSONObject;
import cn.xiaobing.pojo.ResultJson;
public class jsonDemo02 {
/**将对象序列化成json
* @return jsonString
*/
public static String entityToJsonString () {
//构造器实例化对象
ResultJson resutlJson = new ResultJson("2","登录失败,密码错误!");
//利用fastjson中JSONObject类的toJSONString方法,实现将对象ResultJson转化为jsonString
// String jsonString = JSONObject.toJSONString(resutlJson);
//如果需要美化输出json格式
String jsonString = JSONObject.toJSONString(resutlJson,true);
return jsonString;
}
public static void main(String[] args) {
String jsonString = entityToJsonString();
System.out.println("ResultJson序列化json字符串:"+"\n"+jsonString);
}
}
反序列化:
反序列话的规则时根据json的数据格式特点,如: ``{“status”:“1”,“message”:“登录成功”}
{“status”:“1”,“message”:“登录成功”,“data”:{“name”:“Tom”,“age”:“18”,“phone”:“18888888888”}}``
来进行数据解析。
import java.util.Map;
/**创建实体类ResultJson,属性与提供jsonString中的key保持一致
* @author Administrator
*/
public class ResultJson {
private String status;
private String message;
private Map<String,String> datas;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Map<String, String> getDatas() {
return datas;
}
public void setDatas(Map<String, String> datas) {
this.datas = datas;
}
public ResultJson() {
super();
}
public ResultJson(String status, String message, Map<String, String> datas) {
super();
this.status = status;
this.message = message;
this.datas = datas;
}
@Override
public String toString() {
return "ResultJson [status=" + status + ", message=" + message + ", datas=" + datas + "]";
}
}
package cn.xiaobing.json;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import cn.xiaobing.pojo.ResultJson;
/**利用fastJson实现json字符串的反序列化
* @author Administrator
*/
public class jsonDemo01 {
//提供json字符串{"status":"1","message":"登录成功"}
static String jsonString = "{\"status\":\"1\",\"message\":\"登录成功\"}";
static String multilayerJsonString = "{\"status\":\"1\",\"message\":\"登录成功\",\"datas\":{\"name\":\"Tom\",\"age\":\"18\",\"phone\":\"18888888888\"}}";
/**
* 利用fastJson实现json字符串反序列化为对象
*/
public static ResultJson jsonStringToEntity(String jsonString) {
//创建实体类 resultJson,利用fastjson中JSONObject类的parseObject方法,实现将jsonString转化为对象ResultJson
ResultJson resultJson = JSONObject.parseObject(jsonString, ResultJson.class);
return resultJson;
}
/**
* 利用fastJson实现json字符串保存Map中
* @param jsonString
*/
public static Map<String, String> jsonStringToMapping(String jsonString) {
//将json字符串封装到Map
Map<String, String> map = (Map<String, String>) JSONObject.parse(jsonString);
return map;
}
/**
* 利用fastJson实现json(多层嵌套json)字符串反序列化为对象
*/
public static ResultJson multilayerJsonStringToEntity(String multilayerJsonString) {
//创建实体类 resultJson,利用fastjson中JSONObject类的parseObject方法,实现将jsonString转化为对象ResultJson
ResultJson resultJson = JSONObject.parseObject(multilayerJsonString, ResultJson.class);
return resultJson;
}
public static void main(String[] args) {
ResultJson resultJson1 = jsonStringToEntity(jsonString);
System.out.println("json转换成对象输出:"+"{status:"+resultJson1.getStatus()+",message:"+resultJson1.getMessage()+"}");
Map<String, String> map1 = jsonStringToMapping(jsonString);
System.out.println("json转换成Map输出:"+"{status:"+map1.get("status")+",message:"+map1.get("message")+"}");
ResultJson resultJson2 = multilayerJsonStringToEntity(multilayerJsonString);
Map<String, String> map2 = resultJson2.getDatas();
System.out.println("json(多层嵌套json)转换成对象输出:"+"{status:"+resultJson2.getStatus()+",message:"+resultJson2.getMessage()+
" ,datas:{name:"+map2.get("name")+",age:"+map2.get("age")+",phone:"+map2.get("phone")+"}}");
}
}