fastJson中常用方法以及遇到的“坑”
1.使用fastJson,首先引入fastJson依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
2.JSON String to Java Bean
/**
* JSON->Java Bean
*/
@Test
public void test1(){
Person person = new Person().setId("1").setName("fastJson").setAge(1);
String jsonString = JSON.toJSONString(person);
System.out.println(jsonString);
//传入字节码,调用parseObject
Person person1 = JSON.parseObject(jsonString, Person.class);
System.out.println(person1);
}
3.JSON String to List Java Bean
/**
* JSON->List Java Bean
*/
@Test
public void test2(){
List<Person> list = Arrays.asList(new Person().setId("1").setName("fastJson1").setAge(1),
new Person().setId("2").setName("fastJson2").setAge(2),
new Person().setId("3").setName("fastJson3").setAge(3));
String jsonString = JSON.toJSONString(list);
System.out.println(jsonString);
//传入字节码,调用parseArray
List<Person> person1 = JSON.parseArray(jsonString, Person.class);
System.out.println(person1);
}
4.JSON String to List String
/**
* JSON->List String
*/
@Test
public void test3(){
List<String> list = Arrays.asList("hello","world","hello world");
String jsonString = JSON.toJSONString(list);
System.out.println(jsonString);
// new TypeReference<List<String>>() {}
List<String> list1 = JSON.parseObject(jsonString, new TypeReference<List<String>>() {});
System.out.println(list1);
}
5.JSON String to List<Map<String,Object>>
/**
* JSON->List<Map<String,Object>>
*/
@Test
public void test4(){
List<Map<String,Object>> list = new ArrayList<>();
Map<String,Object> map = new HashMap<>();
map.put("key1","value1");
map.put("key2","value2");
list.add(map);
Map<String,Object> map1 = new HashMap<>();
map1.put("key11","value11");
map1.put("key22","value22");
list.add(map1);
Map<String,Object> map2 = new HashMap<>();
map2.put("key111","value111");
map2.put("key222","value222");
list.add(map2);
String jsonString = JSON.toJSONString(list);
System.out.println(jsonString);
// new TypeReference<T>
List<Map<String, Object>> maps = JSON.parseObject(jsonString, new TypeReference<List<Map<String, Object>>>() {});
System.out.println(maps);
}
6.JSON.toJSONString中序列化map中的空字符串会出现空对象问题
@Test
public void testJSON() throws Exception {
Map<String,String> map = new HashMap<String, String>();
map.put("aaa",null);
map.put("bbb",null);
map.put("ccc",null);
System.out.println(map);
String s = JSON.toJSONString(map);
System.out.println(s);
Map<String, String> stringMap = JSON.parseObject(s, new TypeReference<Map<String, String>>() {
});
System.out.println(stringMap);
}
上面的代码需要经过如下修改,才不会出现空对象问题
String s = JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);
7.总结:如果大家在使用fastJSON序列化时出现问题,可以考虑朝着序列化这个方向考虑问题,多了解了解SerializerFeature。我们在学习并使用某一项api时,不仅仅要会这个api,同时
要更加注意这个框架,这个工具类所存在的问题,会有哪些坑!
fastJson中常用方法以及遇到的“坑”的更多相关文章
- fastJSON的常用方法总结
fastJSON的常用方法总结 fastJSON中常用的对象是JSON,JSONArray,JSONObject三个对象.常用的方法如对象转为JSON字符串,JSON字符串转为对象,JSON字符串转为 ...
- 【Fine原创】JMeter分布式测试中踩过的那些坑
最近因为项目需要,研究了性能测试的相关内容,并且最终选用了jmeter这一轻量级开源工具.因为一直使用jmeter的GUI模式进行脚本设计,到测试执行阶段工具本身对资源的过量消耗给性能测试带来了瓶颈, ...
- FastJson中@JSONField注解使用
最近做项目中,使用了json格式在服务器之间进行数据传输.但是发现json格式数据不符合JAVA中的变量定义规则,并且难以理解,因此需要在后台中做二次处理,将数据处理成我们系统中定义的格式. 思路: ...
- IT第九天 - 包、访问修饰符、变量的内存分配、String类中常用方法
IT第九天 上午 包 1.包的命名规则:域名.项目名称.模块名 2.如:Wfei.com.windows.login 访问限制符 1.四种访问限制符分别对应为: (1)default:默认的,默认为p ...
- Golang中WaitGroup使用的一点坑
Golang中WaitGroup使用的一点坑 Golang 中的 WaitGroup 一直是同步 goroutine 的推荐实践.自己用了两年多也没遇到过什么问题.直到一天午睡后,同事扔过来一段奇怪的 ...
- fastjson中对象转化为字符串时过滤某字段
fastjson中对象转化为字符串时过滤某字段,有两种方法: 一.在该字符定义上方添加"@JSONField(serialize=false)"注解: 二.调用含有Property ...
- Java分享笔记:File类中常用方法的介绍
java.io包下的File类用于描述和创建一个文件或文件夹对象,只能对文件或文件夹做一些简单操作,不能修改文件的内容,功能比较有限.下面是对于File类中常用方法的程序演示. [1] 演示程序一 p ...
- Vue中的slot(占坑,预留位置)
Vue中的slot(占坑,预留位置) 子模板不使用slot 子模板使用slot 子模板使用使用name属性,且传递data 文件名:Slots.vue //slot组件 <template> ...
- 微信小程序中scroll-view的几个坑
微信小程序中scroll-view的几个坑 1:设置scroll-x时,却不能横向滚动,因为view是block组件,但是这里用了flex就不能滚动了(想用flex布局,请开启属性enable-fle ...
随机推荐
- rest framework之过滤组件
一.普通过滤 (一)get_queryset get_queryset方法是GenericAPIView提供的一个方法,旨在返回queryset数据集,而过滤就是要在这个方法返回数据集之前对数据进行筛 ...
- Tomcat---概述
1.Tomcat 是 一个 免费.开源 的 web应用服务器: 属于 轻量级 应用服务器,在中小型系统.并发量不大的情况下 被广泛使用: 2.Tomcat 是 Apache下的核心项目 ...
- JS数组 Array
1.创建数组 var array=new Array(); 2.添加数组 array.push("111"); array.push("111"); array ...
- Kylin-2.6.2集群部署
1. 集群节点规划与说明 rzx1 all rzx2 query rzx3 query 说明: Kylin节点角色有三种: all: 包含query和job query: 查询节点 job: 工作节点 ...
- 深入理解MAGENTO – 第八章 – 深入MAGENTO的系统配置
(以下是原文) Last time we talked about Magento’s System Configuration system. If you missed it, you’ll wa ...
- Android中当数据库需要更新时我们该怎么办?
问题:Android数据库更新并保留原来的数据如何实现 Andoird的SQLiteOpenHelper类中有一个onUpgrade方法.帮助文档中只是说当数据库升级时该方法被触发.经过实践,解决了我 ...
- Sqli labs系列-less-2 详细篇
就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...
- Web移动端常见问题-摘抄
一.按钮点击时出现黑色背景 解决方法: 1 2 .class { -webkit-tap-highlight-color:rgba(0,0,0,0);} .class { -webkit-appe ...
- (转)OpenFire源码学习之八:MUC用户聊天室
转:http://blog.csdn.net/huwenfeng_2011/article/details/43413817 MUC 房间属性设置 以上属性存储在MUCPersistenceManag ...
- 互斥锁Demo
#include <stdio.h> #include <pthread.h> pthread_t work1Id; pthread_t work2Id; ; ; pthrea ...