🌺个人主页:杨永杰825_Spring,Mysql,多线程-CSDN博客
?每日一句:成为架构师路途遥远
📢欢迎大家:关注🔍+点赞👍+评论📝+收藏??
目录
Fastjson
?是一个用 Java 语言编写的高性能 JSON 处理库,它的主要特点是速度快,使用方便。Fastjson
?提供了丰富的 API ,用于 JSON 的序列化和反序列化。它可以将 Java 对象转换为 JSON 字符串,也可以将 JSON 字符串转换为 Java 对象。此外,Fastjson
?还提供了对 JSON 数据的修改、查询等操作。
Fastjson是一种常用的Java工具类,用于JSON格式字符串与JSON对象及JavaBean之间的转换。其方法大致分为序列化和反序列化两类。常用的方法有:
- toJSONString():将Java对象序列化为JSON字符串。
- parseObject():将JSON字符串解析为Java对象。
- toJSON():将Java对象转换为JSON对象。
- parseArray():将JSON数组字符串解析为Java数组。
Fastjson还提供了许多其他的方法,你可以根据具体需求选择使用。若你还有其他疑问,可以继续向我提问。
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public class Fastjson {
public static void main(String[] args) {
People people = new People();
people.setAge(120);
people.setName("xixixi");
List<People> list = new ArrayList<>();
list.add(people);
System.out.println(JSON.toJSON(people));
System.out.println(JSONObject.toJSON(people));
System.out.println(JSON.toJSON(list));
String peoplejson = "{'name':'hheheheh','age':13}";
People p = JSONObject.parseObject(peoplejson, People.class);
System.out.println(p.getAge());
}
}
class People {
private String name;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
输出结果为:
{"name":"xixixi","age":120}
{"name":"xixixi","age":120}
[[{"name":"xixixi","age":120}]]
13
除了Fastjson
,还有其他一些常用的JSON处理库,例如:
Gson
:项目地址为GitHub - google/gson: A Java serialization/deserialization library to convert Java Objects into JSON and back,是目前功能较全的Json解析神器,最初是为满足Google公司内部需求而由Google自行研发而来,自2008年5月发布第一版以来,已被许多公司或用户应用。Jackson
:是一个广泛使用的开源Java JSON处理库,它提供了高效、灵活和易用的API,适用于各种应用场景。Json-lib
:是一个轻量级的Java JSON处理库,它支持多种数据类型和复杂的数据结构,并且提供了方便的工具和方法。
这些库都有各自的特点和适用场景,你可以根据具体需求和使用场景选择适合的库。
要保证Fastjson的安全性,可以考虑以下几点:
- 及时更新版本:关注官方的更新公告,对受影响的版本及时升级至最新版本。
- 配置安全模式:Fastjson在1.2.68及之后的版本中引入了安全模式。配置安全模式后,无论白名单和黑名单,都不支持autoType,可一定程度上缓解反序列化Gadgets类变种攻击。
具体的配置方法可参考:fastjson_safemode · alibaba/fastjson Wiki · GitHub。建议在使用Fastjson时,根据具体的应用场景和安全需求,采取适当的安全措施,以确保数据的安全性。
如果需要进行一些配置,比如设置序列化和反序列化的策略,可以在 Spring Boot 的配置类中添加相关的配置?
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FastjsonConfiguration {
@Bean
public FastJsonConfig fastJsonConfig() {
// 配置 Fastjson
FastJsonConfig config = new FastJsonConfig();
config.setSerializerFeatures(
SerializerFeature.PrettyFormat,
SerializerFeature.WriteNullStringAsEmpty
);
return config;
}
}