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); } |
上面的代码需要经过如下修改,才不会出现空对象问题
1 | String s = JSON.toJSONString(map, SerializerFeature.WriteMapNullValue); |
7.总结:如果大家在使用fastJSON序列化时出现问题,可以考虑朝着序列化这个方向考虑问题,多了解了解SerializerFeature。我们在学习并使用某一项api时,不仅仅要会这个api,同时
要更加注意这个框架,这个工具类所存在的问题,会有哪些坑!
作者:努力为明天
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)