首页 > 编程知识 正文

java序列化是什么(数组序列化java)

时间:2023-05-03 16:45:24 阅读:89980 作者:774

1.Fastjson简介

Fastjson是阿里巴巴的开源JSON解析库,支持所有JAVA对象和JSON格式的序列化和反序列化。

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

提供服务器端、安卓客户端两种分析工具,性能良好

允许转换现有的不可修改的对象(仅限类,无源代码);

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

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

Fastjson官方源地址: https://Github.com/Alibaba/Fast JSon

下载

2.下载使用

Maven中央仓库的最新版本:

359 search.maven.org/artifact/com.Alibaba/fast JSON/1.2.75/jar或配置依赖于maven坐标:

从属关系

groupIdcom.alibaba/groupId

artifactIdfastjson/artifactId标识

版本1.2.75 /版本

/从属 )。

3.自定义类User.java

软件包阵列.三重实体;

公共类用户

私有整合者id;

私有字符串名称;

私有字符串通过;

私有集成器;

公共用户()

}

公共用户(整合者id、字符串名称、字符串路径、整合者age ) {

超级(;

this.id=id身份;

this.name=名称;

this.pass=传球;

this.age=age;

}

公共集成电路

返回身份;

}

公共语音集(集成id ) {

this.id=id身份;

}

公共字符串通用名称

返回名称;

}

公共语音集名称(字符串名称) {

this.name=名称;

}

公共字符串通过

返回通过;

}

公共语音集通过(字符串通过) {

this.pass=传球;

}

公共集成器获取代理

返回日期;

}

公共语音设置(集成层) {

this.age=age;

}

@Override

公共字符串字符串

返回用户[ id=' id ',名称='名称',通过='通过',age=' age '];

}

}

4.序列化为JSON字符串

以下Java的五个常见对象:JavaBean、Array、List、Set和Map被序列化为JSON字符串。

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

//*

* * POJO /域/实体==JSON

* pTitle: bean2Json/p

* * p描述:/p

*/

公共静态语音bean 2js on (

用户=新用户(1001,'杰克','杰克',18 );

stringjsonstring=JSON.tojsonstring (用户);

Logger.info(JSONfo

rmatter(jsonString,"bean")); }

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

/** * array/list/set/map ==> json * <p>Title: collection2Json</p> * <p>Description: </p> */ public static void collection2Json() { User[] array = new User[2]; //Array List<User> list = new ArrayList<User>(); //List Set<User> set = new HashSet<User>(); //Set Map<Integer, User> map = new HashMap<Integer, User>();//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 * <p>Title: json2Bean</p> * <p>Description: </p> */ 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 * <p>Title: json2Collection</p> * <p>Description: </p> */ 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<User> list = JSON.parseArray(listJsonString, User.class); List<User> list = JSON.parseObject(listJsonString, new TypeReference<List<User>>() {}); Set<User> set = JSON.parseObject(setJsonString, new TypeReference<Set<User>>() {}); Map<Integer, User> map = JSON.parseObject(mapJsonString, new TypeReference<Map<Integer, User>>() {}); 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 * <p>Title: jsonFormatter</p> * <p>Description: </p> * @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序列化与反序列化五种常用对象就这么简单,小伙伴们不妨试试。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。