FastJSON 简单使用2

FastJSON是一个Java语言编写的高性能,功能完善,完全支持http://json.org的标准的JSON库。多了不说了,百度一下一大把。

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

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

1 <dependency>
2     <groupId>com.alibaba</groupId>
3     <artifactId>fastjson</artifactId>
4     <version>1.1.23</version>
5 </dependency>

 

序列化

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

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

1.基本的序列化

String objJson = JSON.toJSONString(Object object);

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

例1:将Map转成JSON

1 Map<String, Object> map = new HashMap<String, Object>();
2 map.put("key1", "One");
3 map.put("key2", "Two");
4         
5 String mapJson = JSON.toJSONString(map);

输出结果:

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

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

复制代码
 1 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
 2         
 3 Map<String, Object> map1 = new HashMap<String, Object>();
 4 map1.put("key1", "One");
 5 map1.put("key2", "Two");
 6         
 7 Map<String, Object> map2 = new HashMap<String, Object>();
 8 map2.put("key1", "Three");
 9 map2.put("key2", "Four");
10         
11 list.add(map1);
12 list.add(map2);
13         
14 String listJson = JSON.toJSONString(list);
复制代码

输出结果:

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

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

1 User user = new User();
2 user.setUserName("李四");
3 user.setAge(24);
4         
5 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);

输出结果为:

复制代码
 1 [
 2     {
 3         "key1":"One",
 4         "key2":"Two"
 5     },
 6     {
 7         "key3":"Three",
 8         "key4":"Four"
 9     }
10 ]
复制代码

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。

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

输出结果:

1401370199040

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

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

输出结果:

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

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

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

1 String dateJson = JSON.toJSONStringWithDateFormat(new Date(), "yyyy-MM-dd HH:mm:ss.SSS");
2         
3 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

复制代码
1 Map<String, Object> map = new HashMap<String,Object>();
2         
3 String b = null;
4 Integer i = 1;
5         
6 map.put("a", b);
7 map.put("b", i);
8         
9 String listJson = JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);
复制代码

输出结果:

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

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

例11

1 User user = new User();
2         
3 user.setAge(18);
4 user.setUserName("李四");
5         
6 String listJson = JSON.toJSONString(user, SerializerFeature.WriteClassName);

输出结果:

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

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

例12:将例11反序列化。

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

输出结果:

18

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

 

反序列化

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

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

 

 简单举几个例子。

指定Class信息反序列化。

例13:将例3反序列化。

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

输出结果:

李四

集合反序列化。

例14:将例2反序列化。

1 List<Map> list1 = JSON.parseArray(listJson, Map.class);
2          
3 for(Map<String, Object> map : list1){
4     System.out.println(map.get("key1"));
5     System.out.println(map.get("key2"));         
6 }

输出结果:

1 One
2 Two
3 Three
4 Four

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

例15:将例1反序列化。

1 Map<String, Object> map1 = JSON.parseObject(mapJson, new TypeReference<Map<String, Object>>(){});
2 System.out.println(map1.get("key1"));
3 System.out.println(map1.get("key2"));

输出结果:

1 One
2 Two

 

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

JSONObject,JSONArray是JSON的两个子类。

JSONObject相当于Map<String, Object>,

JSONArray相当于List<Object>。

简单方法示例:

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

复制代码
 1 Map<String, Object> map = new HashMap<String, Object>();
 2 map.put("key1", "One");
 3 map.put("key2", "Two");
 4                            
 5 JSONObject j = new JSONObject(map);
 6                    
 7 j.put("key3", "Three");
 8           
 9 System.out.println(j.get("key1"));
10 System.out.println(j.get("key2"));
11 System.out.println(j.get("key3"));
复制代码

输出结果:

 

1 One
2 Two
3 Three

 

 

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

复制代码
 1 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
 2         
 3 Map<String, Object> map = new HashMap<String, Object>();
 4 map.put("key1", "One");
 5 map.put("key2", "Two");
 6         
 7 Map<String, Object> map2 = new HashMap<String, Object>();
 8 map2.put("key1", "Three");
 9 map2.put("key2", "Four");
10         
11 list.add(map);
12 list.add(map2);
13         
14 JSONArray j = JSONArray.parseArray(JSON.toJSONString(list));
15          
16 for(int i=0; i<j.size(); i++){
17     System.out.println(j.get(i));
18 }
复制代码

输出结果:

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

更多方法使用请参考API(没有注释的API,让我很头疼啊)。


 

end


转载:https://blog.csdn.net/flysun3344/article/details/54707965

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用网络文章开启本课程的开篇: 在大数据分析领域中,传统的大数据分析需要不同框架和技术组合才能达到最终的效果,在人力成本,技术能力和硬件成本上以及维护成本让大数据分析变得成为昂贵的事情。让很多中小型企业非常苦恼,不得不被迫租赁第三方大型公司的数据分析服务。  ClickHouse开源的出现让许多想做大数据并且想做大数据分析的很多公司和企业耳目一新。ClickHouse 正是以不依赖Hadoop 生态、安装和维护简单、查询速度快、可以支持SQL等特点在大数据分析领域越走越远。  本课程采用全新的大数据技术栈:Flink+ClickHouse,让你体验到全新技术栈的强大,感受时代变化的气息,通过学习完本课程可以节省你摸索的时间,节省企业成本,提高企业开发效率。本课程不仅告诉你如何做项目,还会告诉你如何验证系统如何支撑亿级并发,如何部署项目等等。希望本课程对一些企业开发人员和对新技术栈有兴趣的伙伴有所帮助,如对我录制的教程内容有建议请及时交流。 课程概述:在这个数据爆发的时代,像大型电商的数据量达到百亿级别,我们往往无法对海量的明细数据做进一步层次的预聚合,大量的业务数据都是好几亿数据关联,并且我们需要聚合结果能在秒级返回。  那么我们该如何实现这一需求呢?基于Flink+ClickHouse构建电商亿级实时数据分析平台课程,将带领大家一步一步从无到有实现一个高性能的实时数据分析平台,该系统以热门的互联网电商实际业务应用场景为案例讲解,对电商数据的常见实战指标以及难点实战指标进行了详尽讲解,具体指标包括:概况统计、全站流量分析、渠道分析、广告分析、订单分析、运营分析(团购、秒杀、指定活动)等,该系统指标分为分钟级和小时级多时间方位分析,能承载海量数据的实时分析,数据分析涵盖全端(PC、移动、小程序)应用。 本课程凝聚讲师多年一线大数据企业实际项目经验,大数据企业在职架构师亲自授课,全程实操代码,带你体验真实的大数据开发过程,代码现场调试。通过本课程的学习再加上老师的答疑,你完全可以将本案例直接应用于企业。 本套课程可以满足世面上绝大多数大数据企业级的海量数据实时分析需求,全部代码在老师的指导下可以直接部署企业,支撑千亿级并发数据分析。项目代码也是具有极高的商业价值的,大家可以根据自己的业务进行修改,便可以使用。  本课程包含的技术: 开发工具为:IDEA、WebStorm Flink1.9.0 ClickHouseHadoop2.6.0 Hbase1.0.0 Kafka2.1.0 Hive1.0.0 Jmeter(验证如何支撑亿级并发)Docker (虚拟化部署)HDFS、MapReduce Zookeeper SpringBoot2.0.2.RELEASE SpringCloud Finchley.RELEASE Binlog、Canal MySQL Vue.js、Nodejs Highcharts Linux Shell编程  课程亮点: 1.与企业对接、真实工业界产品 2.ClickHouse高性能列式存储数据库 3.大数据热门技术Flink新版本 4.Flink join 实战 5.Flink 自定义输出路径实战 6.全链路性能压力测试 7.虚拟化部署 8.集成指标明细查询 9.主流微服务后端系统 10.分钟级别与小时级别多时间方位分析 11.数据库实时同步解决方案 12.涵盖主流前端技术VUE+jQuery+Ajax+NodeJS 13.集成SpringCloud实现统一整合方案 14.互联网大数据企业热门技术栈 15.支持海量数据的实时分析 16.支持全端实时数据分析 17.全程代码实操,提供全部代码和资料 18.提供答疑和提供企业技术方案咨询 企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 
Fastjson是一个Java语言编写的高性能JSON处理库,可以实现JSON字符串与Java对象之间的相互转换。下面是一个简单的示例,演示了如何使用Fastjson进行JSON的序列化和反序列化: 1. 导入Fastjson的依赖包到你的项目中。你可以在Maven或Gradle配置文件中添加以下依赖: ```xml <!-- Maven --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.78</version> </dependency> // Gradle implementation 'com.alibaba:fastjson:1.2.78' ``` 2. 创建一个Java对象,例如: ```java public class Person { private String name; private int age; // getters and setters } ``` 3. 将Java对象转换为JSON字符串: ```java import com.alibaba.fastjson.JSON; Person person = new Person(); person.setName("John"); person.setAge(25); String jsonString = JSON.toJSONString(person); System.out.println(jsonString); ``` 这将输出以下JSON字符串: ```json {"age":25,"name":"John"} ``` 4. 将JSON字符串转换为Java对象: ```java String jsonString = "{\"name\":\"John\",\"age\":25}"; Person person = JSON.parseObject(jsonString, Person.class); System.out.println(person.getName()); System.out.println(person.getAge()); ``` 这将输出: ``` John 25 ``` 这只是Fastjson的基本用法示例,你还可以使用Fastjson进行更复杂的JSON处理操作,例如处理嵌套对象、数组等。你可以参考Fastjson的官方文档(https://github.com/alibaba/fastjson/wiki/Quick-Start)了解更多用法和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值