这么把一个map对象序列化_Fastjson序列化与反序列化JAVA五种常用对象

4d047b61442ffc1ad0b36396a4146383.png

1.Fastjson简介

Fastjson是阿里巴巴的开源JSON解析库,支持任何JAVA对象与JSON格式的序列化与反序列化;

序列化:JAVA对象转换为JSON字符串;反序列化:JSON字符串转换为JAVA对象;

提供服务器端、安卓客户端两种解析工具,性能表现较好;

允许转换预先存在的无法修改的对象(只有class、无源代码);

Java泛型的广泛支持;允许对象的自定义表示、允许自定义序列化类;

支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型);

Fastjson 官方源码地址:https://github.com/alibaba/fastjson

2.下载使用

Maven中央仓库下载最新版本:

https://search.maven.org/artifact/com.alibaba/fastjson/1.2.75/jar

或者配置maven坐标依赖:

com.alibaba  fastjson  1.2.75
2af576dacbf2c1f1cec351aed35a5eec.png

3.自定义类User.java

package raky.train.entity;public class User {  private Integer id;  private String name;  private String pass;  private Integer age;  public User() {  }  public User(Integer id, String name, String pass, Integer age) {    super();    this.id = id;    this.name = name;    this.pass = pass;    this.age = age;  }  public Integer getId() {    return id;  }  public void setId(Integer id) {    this.id = id;  }  public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  public String getPass() {    return pass;  }  public void setPass(String pass) {    this.pass = pass;  }  public Integer getAge() {    return age;  }  public void setAge(Integer age) {    this.age = age;  }  @Override  public String toString() {    return "User [id=" + id + ", name=" + name + ", pass=" + pass + ", age=" + age + "]";  }}

4.序列化为JSON字符串

以下针对Java五种常用对象:JavaBean,Array,List,Set和Map序列化为JSON字符串。

4.1 自定义JavaBean对象序列化为JSON字符串:

/*** pojo/domain/entity ==> json* 

Title: bean2Json

*

Description:

*/public static void bean2Json(){ User user = new User(1001,"jack","jack",18); String jsonString = JSON.toJSONString(user); logger.info(jsonFormatter(jsonString,"bean"));}

4.2 Array/List/Set/Map容器对象序列化为JSON字符串:

/*** array/list/set/map ==> json* 

Title: collection2Json

*

Description:

*/public static void collection2Json() { User[] array = new User[2]; //Array List list = new ArrayList(); //List Set set = new HashSet(); //Set Map map = new HashMap();//Map for(int i = 0; i < 2; i++) { array[i] = new User(i, "raky-array-" + i,"" + i, i); list.add(new User(i, "raky-list-" + i,"" + i, i)); set.add(new User(i, "raky-set-" + i,"" + i, i)); map.put(i, new User(i, "raky-map-"+i,"" + i, i)); } String arrayJsonString = JSON.toJSONString(array); String listJsonString = JSON.toJSONString(list); String setJsonString = JSON.toJSONString(set); String mapJsonString = JSON.toJSONString(map); logger.info(jsonFormatter(arrayJsonString,"array")); logger.info(jsonFormatter(listJsonString,"list")); logger.info(jsonFormatter(setJsonString,"set")); logger.info(jsonFormatter(mapJsonString,"bean"));}

5.反序列化为Java对象

以下针对JSON字符串转换为Java五种常用对象:JavaBean,Array,List,Set和Map。

5.1 JSON字符串反序列化为自定义JavaBean对象:

/*** json ==> pojo/domain/entity* 

Title: json2Bean

*

Description:

*/public static void json2Bean(){ String jsonString = "{"id":1001,"name":"jack","pass":"jack","age":18}"; User user = JSON.parseObject(jsonString, User.class); logger.info(user.toString());}

5.2 JSON字符串反序列化为Array/List/Set/Map容器对象:

/*** json ==> array/list/set/map* 

Title: json2Collection

*

Description:

*/public static void json2Collection() { String arrayJsonString = "[{"id":0,"name":"raky-array-0","pass":"0","age":0},{"id":1,"name":"raky-array-1","pass":"1","age":1}]"; String listJsonString = "[{"id":0,"name":"raky-list-0","pass":"0","age":0},{"id":1,"name":"raky-list-1","pass":"1","age":1}]"; String setJsonString = "[{"id":1,"name":"raky-set-1","pass":"1","age":1},{"id":0,"name":"raky-set-0","pass":"0","age":0}]"; String mapJsonString = "{"0":{"id":0,"name":"raky-map-0","pass":"0","age":0},"1":{"id":1,"name":"raky-map-1","pass":"1","age":1}}"; User[] array = JSON.parseObject(arrayJsonString, User[].class); //List list = JSON.parseArray(listJsonString, User.class); List list = JSON.parseObject(listJsonString, new TypeReference>() {});Set set = JSON.parseObject(setJsonString, new TypeReference>() {});Map map = JSON.parseObject(mapJsonString, new TypeReference>() {});Arrays.asList(array).forEach((value) -> System.out.println("array-value => " + value));list.forEach((value) -> System.out.println("list-value => " + value));set.forEach((value) -> System.out.println("set-value => " + value));map.forEach((key,value) -> System.out.println("map-value => key = " + key + ", value = " + value));}

6.Fastjson格式化输出

/*** 格式化json* 

Title: jsonFormatter

*

Description:

* @param jsonString* @param type* @return*/public static String jsonFormatter(String jsonString, String type){ Object object = null; if("bean.map".contains(type)) { //bean/map JSONObject jsonObject = JSONObject.parseObject(jsonString); object = jsonObject; }else if("array.list.set".contains(type)) { //array/list/set JSONArray jsonArray = JSONArray.parseArray(jsonString); object = jsonArray; } String prettyJsonString = JSON.toJSONString(object, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteDateUseDateFormat); return prettyJsonString;}

至此搞定,Fastjson序列化与反序列化五种常用对象就这么简单,小伙伴们不妨试试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值