FastJson-可无视包名位置的序列化

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")+"}}");
    }
}

猜你喜欢

转载自blog.csdn.net/Nimrod__/article/details/112617212