zoukankan      html  css  js  c++  java
  • 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字符串:"+"
    "+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.总结分享,不足之处后续补充!

  • 相关阅读:
    Task.Delay() 和 Thread.Sleep() 区别
    task 如何终止线程
    旧版委托线程回忆
    c# 线程的优先级
    Java——Java泛型
    Java——Java面向对象
    Java——Java连接Jira,创建、修改、删除工单信息
    软件——Jira是什么
    Java——一文读懂Spring MVC执行流程
    Java——SSM整合所需的Maven配置文件
  • 原文地址:https://www.cnblogs.com/xiaozhaoboke/p/11029695.html
Copyright © 2011-2022 走看看