fastjson笔记

本文详细介绍了Fastjson的使用,包括如何导入依赖,实现序列化,设置格式化,日期时间格式化,使用单引号,输出null字段,输出json类型等。还展示了反序列化的例子,帮助理解Fastjson在处理JavaBean到JSON转换过程中的各种选项。
摘要由CSDN通过智能技术生成

参考博客http://t.csdn.cn/oh4R3

fastjson

使用fastjson先需要导入jar包

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.1.23</version>
</dependency>

1.实现序列化的方法

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

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

在这里插入图片描述

1.1最基本的序列化方式

调用格式

String objJson = JSON.toJSONString(Object object);

案例

//普通字符串
String str1 = "str1";
String s = JSON.toJSONString(str1);// 结果  "str1"

//map转为json
Map<String,Object> map = new HashMap<>();
map.put("小明","1");
map.put("小红","2");
String s1 = JSON.toJSONString(map);//结果  {"小明":"1","小红":"2"}

//list中为map转为json
Map<String,Object> map1 = new HashMap<>();
map1.put("小明","1");
map1.put("小红","2");
Map<String,Object> map2 = new HashMap<>();
map2.put("小明","1");
map2.put("小红","2");
List<Map<String,Object>> list = new ArrayList<>();
list.add(map1);
list.add(map2);
String s2 = JSON.toJSONString(list);//结果  [{"小明":"1","小红":"2"},{"小明":"1","小红":"2"}]

User user = new User("小张",12,"男");
String s3 = JSON.toJSONString(user);//结果  {"age":12,"gender":"男","name":"小张"}

1.2设置是否格式化

方法

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

prettyFormat就是一个布尔型的数据,true表示需要格式化,false表示不格式化

格式化就是让json字符串不要一行排列,让其有层次

案例

Map<String,Object> map1 = new HashMap<>();
map1.put("小明","1");
map1.put("小红","2");
Map<String,Object> map2 = new HashMap<>();
map2.put("小明","1");
map2.put("小红","2");
List<Map<String,Object>> list = new ArrayList<>();
list.add(map1);
list.add(map2);
String s2 = JSON.toJSONString(list,true);
System.out.println(s2);

结果

[
	{
		"小明":"1",
		"小红":"2"
	},
	{
		"小明":"1",
		"小红":"2"
	}
]

1.3对日期时间的格式化

案例

String s = JSON.toJSONString(new Date());//结果 1651463420455

//结果 "2022-05-02 11:51:20"
String s1 = JSON.toJSONString(new Date(), SerializerFeature.WriteDateUseDateFormat);

//指定日期格式 结果 "2022-05-02 11:52:03.125"
String s2 = JSON.toJSONStringWithDateFormat(new Date(), "yyyy-MM-dd HH:mm:ss.SSS");

1.4输入的json使用单引号

案例

Map<String,Object> map1 = new HashMap<>();
map1.put("小明","1");
map1.put("小红","2");
Map<String,Object> map2 = new HashMap<>();
map2.put("小明","1");
map2.put("小红","2");
List<Map<String,Object>> list = new ArrayList<>();
list.add(map1);
list.add(map2);
//结果 [{'小明':'1','小红':'2'},{'小明':'1','小红':'2'}]  使用的是单引号
String s2 = JSON.toJSONString(list, SerializerFeature.UseSingleQuotes);

1.5输出null字段

案例

Map<String, Object> map = new HashMap<String,Object>();
String b = null;
Integer i = 1;
map.put("a",b);
map.put("b",i);

//结果 {"a":null,"b":1}
String listJson = JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);

1.6输出json类型

案例

User user = new User("小明",18,"男");
//结果 {"@type":"com.hty.pojo.User","age":18,"gender":"男","name":"小明"}
String s = JSON.toJSONString(user, SerializerFeature.WriteClassName);

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

1.7反序列化

案例

User user = new User("小明",18,"男");
String s = JSON.toJSONString(user, SerializerFeature.WriteClassName);

//结果  User(name=小明, age=18, gender=男)
User user1 = (User)JSON.parse(s);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastjsonFastjson2都是JSON库,用于处理JSON格式的数据。 Fastjson2是Fastjson项目的重要升级,旨在为未来十年提供高性能的JSON库。相比于原来的FastjsonFastjson2在性能上有了很大的提升,并且更加安全。它完全删除了autoType白名单,提升了安全性。 在使用上,导入Fastjson2的依赖后,与原来的Fastjson在代码上基本相同。唯一的区别是在Fastjson2中,将`jsonArray.toJavaList`方法转变为`jsonArray.toList`。 总结来说,FastjsonFastjson2都是用于处理JSON数据的库,但Fastjson2是Fastjson的升级版本,提供了更高的性能和更好的安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [fastjson2 介绍及使用](https://blog.csdn.net/qq_33697094/article/details/128114939)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Fastjson2你开始使用了吗?来看看源码解析](https://blog.csdn.net/chenxuyuana/article/details/125581066)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值