fastJson 解析、序列化及反序列化


一、環境准備:使用maven特性在pom.xml中導入fastjson的依賴包

 

 

 

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>

二、序列化

1.創建實體類(根據json的key值創建對象屬性)

package cn.xiaobing.pojo;

/**創建實體類ResultJson,屬性與提供jsonString中的key保持一致
 * @author Administrator
 */
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 + "]";
    }
}

2.利用fastJson實現序列化(ResultJson對象轉化為json字符串)

package cn.xiaobing.json;

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

 

 

三、反序列化

1.提供json字符串如:

{"status":"1","message":"登錄成功"}

{"status":"1","message":"登錄成功","data":{"name":"Tom","age":"18","phone":"18888888888"}}

2.修改實體類對象(新增json多層數據結構)

package cn.xiaobing.pojo;

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

}

3.利用fastJson實現json字符串的反序列化

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM