博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FastJSON 简单使用
阅读量:6913 次
发布时间:2019-06-27

本文共 5378 字,大约阅读时间需要 17 分钟。

FastJSON是一个Java语言编写的高性能,功能完善,完全支持的标准的JSON库。多了不说了,一大把。

在此,简单的总结一下自己用过,测试过的方法。

如果使用Maven,在pom.xml文件加入以下依赖。

com.alibaba
fastjson
1.2.15

  

序列化

序列化就是指 把JavaBean对象转成JSON格式的字符串。

com.alibaba.fastjson.JSON提供了许多方法(多态)实现序列化。

 

1.基本的序列化

String objJson = JSON.toJSONString(Object object);

  

传入一个对象,将对象转成JSON字符串。

例1:将Map转成JSON

Map
map = new HashMap
(); map.put("key1", "One"); map.put("key2", "Two"); String mapJson = JSON.toJSONString(map);

  

输出结果:

{"key1":"One","key2":"Two"}

  

 

例2:将List<Map>转成JSON。

List
> list = new ArrayList
>(); Map
map1 = new HashMap
(); map1.put("key1", "One"); map1.put("key2", "Two"); Map
map2 = new HashMap
(); map2.put("key1", "Three"); map2.put("key2", "Four"); list.add(map1); list.add(map2); String listJson = JSON.toJSONString(list);

  

输出结果:

[{"key1":"One","key2":"Two"},{"key3":"Three","key4":"Four"}]

  

例3:自定义JavaBean User转成JSON。

 

User user = new User(); user.setUserName("李四"); user.setAge(24);          String userJson = JSON.toJSONString(user);

  

输出结果:

{"age":24,"userName":"李四"}

  

可以输出格式化后的 JSON 字符串。

String objJson = JSON.toJSONString(Object object, boolean prettyFormat);

  

传入一个对象和一个布尔类型(是否格式化),将对象转成格式化后的JSON字符串。

例4:以例2代码为例。

String listJson = JSON.toJSONString(list, true);

  

输出结果为:

[      {          "key1":"One",          "key2":"Two"      },      {        "key3":"Three",          "key4":"Four"    } ]

  

FastJSON提供了许多特性支持。

String objJson = JSON.toJSONString(Object object, SerializerFeature... features)

  

传入一个对象和SerializerFeature类型的可变变量。SerializerFeature是一个枚举。

com.alibaba.fastjson.serializer.SerializerFeature

 

 

 

你可以根据自己的情况使用这些特性。

简单说下几个常用的特性:

1.日期格式化:

FastJSON可以直接对日期类型格式化,在缺省的情况下,FastJSON会将Date转成long。

例5:FastJSON将java.util.Date转成long。

 

String dateJson = JSON.toJSONString(new Date());         System.out.println(dateJson);

  

输出结果:

1401370199040

  

例6:使用SerializerFeature特性格式化日期。

String dateJson = JSON.toJSONString(new Date(), SerializerFeature.WriteDateUseDateFormat);         System.out.println(dateJson);

  

输出结果:

"2014-05-29 21:36:24"

  

 

也可以指定输出日期格式。

例7:指定输出日期格式。

 

String dateJson = JSON.toJSONStringWithDateFormat(new Date(), "yyyy-MM-dd HH:mm:ss.SSS");          System.out.println(dateJson);

  

输出结果:

"2014-05-29 21:47:00.154"

  

 

2.使用单引号。

例8:以例2为例。

String listJson = JSON.toJSONString(list, SerializerFeature.UseSingleQuotes);

  

输出结果:

[{'key1':'One','key2':'Two'},{'key3':'Three','key4':'Four'}]

  

3.JSON格式化。

例9:

String listJson = JSON.toJSONString(list, SerializerFeature.PrettyFormat);

  

输出结果:与例4结果一致。

4.输出Null字段。

 缺省情况下FastJSON不输入为值Null的字段,可以使用SerializerFeature.WriteMapNullValue使其输出。

例10:

Map
map = new HashMap
(); String b = null; Integer i = 1; map.put("a", b); map.put("b", i); String listJson = JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);

  

输出结果:

{"a":null,"b":1}

  

5.序列化是写入类型信息。

例11:

User user = new User();          user.setAge(18); user.setUserName("李四");          String listJson = JSON.toJSONString(user, SerializerFeature.WriteClassName);

  

输出结果:

{"@type":"User","age":18,"userName":"李四"}

  

 

由于序列化带了类型信息,使得反序列化时能够自动进行类型识别。

例12:将例11反序列化。

 

User user1 = (User) JSON.parse(listJson);          System.out.println(user1.getAge());

  

输出结果:

18

  

如果User序列化是没有加入类型信息(SerializerFeature.WriteClassName),按照例12的做法就会报错(java.lang.ClassCastException)。

 

反序列化

反序列化就是把JSON格式的字符串转化为Java Bean对象。

com.alibaba.fastjson.JSON提供了许多方法(多态)实现反序列化

 

 简单举几个例子。

指定Class信息反序列化。

例13:将例3反序列化。

 

User user1 = JSON.parseObject(userJson, User.class);System.out.println(user1.getUserName());

  

 

输出结果:

李四

  

集合反序列化。

例14:将例2反序列化。

List list1 = JSON.parseArray(listJson, Map.class);           for(Map
map : list1){ System.out.println(map.get("key1")); System.out.println(map.get("key2")); }

  

输出结果:

One Two Three Four

  

泛型的反序列化(使用TypeReference传入类型信息)。

例15:将例1反序列化。

 

Map
map1 = JSON.parseObject(mapJson, new TypeReference
>(){}); System.out.println(map1.get("key1")); System.out.println(map1.get("key2"));

  

 

输出结果:

OneTwo

  

 

---------------------------------------------------------------------------------------------------------------------------------------------------------

JSONObject,JSONArray是JSON的两个子类。

JSONObject相当于Map<String, Object>,

JSONArray相当于List<Object>。

简单方法示例:

例16:将Map转成JSONObject,然后添加元素,输出。

 

Map
map = new HashMap
(); map.put("key1", "One"); map.put("key2", "Two"); JSONObject j = new JSONObject(map); j.put("key3", "Three"); System.out.println(j.get("key1")); System.out.println(j.get("key2")); System.out.println(j.get("key3"));

  

 

输出结果:

One Two Three

  

例17:将List对象转成JSONArray,然后输出。

List
> list = new ArrayList
>(); Map
map = new HashMap
(); map.put("key1", "One"); map.put("key2", "Two"); Map
map2 = new HashMap
(); map2.put("key1", "Three"); map2.put("key2", "Four"); list.add(map); list.add(map2); JSONArray j = JSONArray.parseArray(JSON.toJSONString(list)); for(int i=0; i

  

输出结果:

{"key1":"One","key2":"Two"} {"key1":"Three","key2":"Four"}

  

 

转载地址:http://qyacl.baihongyu.com/

你可能感兴趣的文章
全能App研发助手!滴滴开源DoraemonKit
查看>>
.NET开源简史
查看>>
NoSQL 数据库敏捷数据模型
查看>>
Oracle回应用户锁定,自治数据库是更好选择
查看>>
函数式编程能否支持更高效的区块链基础设施?
查看>>
苹果发布Core ML 2
查看>>
centos rocksdb 性能测试笔记(二)
查看>>
iOS开发之多线程浅析
查看>>
jquery 读书笔记
查看>>
修改监控录像时间的方法以及基础常识,必看! ...
查看>>
TNS-12535 TNS-00505的处理方法
查看>>
R语言:数据输出至文件
查看>>
Linux下搭建 NFS
查看>>
VR AR创新创业大赛顺利收官,行业大咖看好移动VR发展
查看>>
Vive戴起来不够舒服?SynergyWiz为其设计了翻盖
查看>>
新年快乐,介绍个简单的Excel理财工作的制作方法
查看>>
[翻译-ASP.NET MVC]Contact Manager开发之旅之迭代1 - 创建Contact Manager应用
查看>>
Linux C 下使用openssl 进行SHA1加密
查看>>
4星|《我的第一本创业融资指南》:投资人写的创业者融资指南
查看>>
再现一分钱中标,中国电信拿下海南政务云项目
查看>>