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值创建对象属性)

 1 package cn.xiaobing.pojo;
 2 
 3 /**创建实体类ResultJson,属性与提供jsonString中的key保持一致
 4  * @author Administrator
 5  */
 6 public class ResultJson {
 7     private String status;
 8     private String message;
 9     public String getStatus() {
10         return status;
11     }
12     public void setStatus(String status) {
13         this.status = status;
14     }
15     public String getMessage() {
16         return message;
17     }
18     public void setMessage(String message) {
19         this.message = message;
20     }
21     
22     public ResultJson() {
23         super();
24     }
25     public ResultJson(String status, String message) {
26         super();
27         this.status = status;
28         this.message = message;
29     }
30     @Override
31     public String toString() {
32         return "ResultJson [status=" + status + ", message=" + message + "]";
33     }
34 }

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多层数据结构)

 1 package cn.xiaobing.pojo;
 2 
 3 import java.util.Map;
 4 
 5 /**创建实体类ResultJson,属性与提供jsonString中的key保持一致
 6  * @author Administrator
 7  */
 8 public class ResultJson {
 9     private String status;
10     private String message;
11     private Map<String,String> datas;
12     public String getStatus() {
13         return status;
14     }
15     public void setStatus(String status) {
16         this.status = status;
17     }
18     public String getMessage() {
19         return message;
20     }
21     public void setMessage(String message) {
22         this.message = message;
23     }
24     
25     public Map<String, String> getDatas() {
26         return datas;
27     }
28     public void setDatas(Map<String, String> datas) {
29         this.datas = datas;
30     }
31     public ResultJson() {
32         super();
33     }
34     public ResultJson(String status, String message, Map<String, String> datas) {
35         super();
36         this.status = status;
37         this.message = message;
38         this.datas = datas;
39     }
40     @Override
41     public String toString() {
42         return "ResultJson [status=" + status + ", message=" + message + ", datas=" + datas + "]";
43     }
44     
45 }

3.利用fastJson实现json字符串的反序列化

 1 package cn.xiaobing.json;
 2 
 3 import java.util.Map;
 4 import com.alibaba.fastjson.JSONObject;
 5 import cn.xiaobing.pojo.ResultJson;
 6 
 7 /**利用fastJson实现json字符串的反序列化
 8  * @author Administrator
 9  */
10 public class jsonDemo01 {
11     //提供json字符串{"status":"1","message":"登录成功"}
12     static String jsonString = "{\"status\":\"1\",\"message\":\"登录成功\"}";
13     static String multilayerJsonString = "{\"status\":\"1\",\"message\":\"登录成功\",\"datas\":{\"name\":\"Tom\",\"age\":\"18\",\"phone\":\"18888888888\"}}";
14     /**
15      * 利用fastJson实现json字符串反序列化为对象
16      */
17     public static ResultJson jsonStringToEntity(String jsonString) {
18         
19         //创建实体类 resultJson,利用fastjson中JSONObject类的parseObject方法,实现将jsonString转化为对象ResultJson
20         ResultJson resultJson = JSONObject.parseObject(jsonString, ResultJson.class);
21         return resultJson;
22     }
23     /**
24      * 利用fastJson实现json字符串保存Map中
25      * @param jsonString 
26      */
27     public static Map<String, String> jsonStringToMapping(String jsonString) {
28         //将json字符串封装到Map
29         Map<String, String> map = (Map<String, String>) JSONObject.parse(jsonString);
30         return map;
31     }
32     /**
33      * 利用fastJson实现json(多层嵌套json)字符串反序列化为对象
34      */
35     public static ResultJson multilayerJsonStringToEntity(String multilayerJsonString) {
36         
37         //创建实体类 resultJson,利用fastjson中JSONObject类的parseObject方法,实现将jsonString转化为对象ResultJson
38         ResultJson resultJson = JSONObject.parseObject(multilayerJsonString, ResultJson.class);
39         return resultJson;
40     }
41     
42     public static void main(String[] args) {
43         ResultJson resultJson1 = jsonStringToEntity(jsonString);
44         System.out.println("json转换成对象输出:"+"{status:"+resultJson1.getStatus()+",message:"+resultJson1.getMessage()+"}");
45         Map<String, String> map1 = jsonStringToMapping(jsonString);
46         System.out.println("json转换成Map输出:"+"{status:"+map1.get("status")+",message:"+map1.get("message")+"}");
47         ResultJson resultJson2 = multilayerJsonStringToEntity(multilayerJsonString);
48         Map<String, String> map2 = resultJson2.getDatas();
49         System.out.println("json(多层嵌套json)转换成对象输出:"+"{status:"+resultJson2.getStatus()+",message:"+resultJson2.getMessage()+
50                     " ,datas:{name:"+map2.get("name")+",age:"+map2.get("age")+",phone:"+map2.get("phone")+"}}");
51     }
52 }

4.总结分享,不足之处后续补充!

 

转载于:https://www.cnblogs.com/xiaozhaoboke/p/11029695.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值