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.总结分享,不足之处后续补充!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏