以下是Fastjson在不同场景下的使用方式:
一、添加依赖
-
Maven项目
- 在
pom.xml
文件中添加以下依赖:
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency>
- 在
-
Gradle项目
- 在
build.gradle
文件中添加:
implementation 'com.alibaba:fastjson:1.2.83'
- 在
-
Eclipse项目
- jar包下载地址:
-
GitHub下载地址:Fastjson GitHub发布页面 提供了最新版本的jar包下载。
-
Maven中央仓库:Maven中央仓库 也提供了Fastjson的jar包下载。
-
- 在lib文件中添加fastjson的jar包
- jar包下载地址:
二、序列化Java对象为JSON字符串
- 简单对象
- 假设存在一个
User
类:
public class User { private String username; private int age; // 构造函数、getter和setter方法 }
- 创建
User
对象并序列化:
User user = new User("John", 25); String jsonString = JSON.toJSONString(user); System.out.println(jsonString);
- 假设存在一个
- 包含集合的对象
- 若
User
类有一个List<String> hobbies
属性:
User user = new User("Alice", 30); user.setHobbies(Arrays.asList("reading", "swimming")); String jsonString = JSON.toJSONString(user);
- 若
三、反序列化JSON字符串为Java对象
- 基本类型反序列化
- 对于简单的JSON字符串,如
{"username":"Bob","age":35}
反序列化为User
对象:
String jsonString = "{\"username\":\"Bob\",\"age\":35}"; User user = JSON.parseObject(jsonString, User.class);
- 对于简单的JSON字符串,如
- 复杂类型反序列化
- 如果JSON字符串包含数组或对象嵌套,例如
{"username":"Charlie","age":40,"hobbies":["running","cycling"]}
:
String jsonString = "{\"username\":\"Charlie\",\"age\":40,\"hobbies\":[\"running\",\"cycling\"]}"; User user = JSON.parseObject(jsonString, User.class);
- 如果JSON字符串包含数组或对象嵌套,例如
四、处理JSON数据中的特殊字符和格式
- 格式化输出
- 若要使生成的JSON字符串格式化(更易读),可以使用
JSON.toJSONString(user, true)
,其中第二个参数true
表示格式化。
- 若要使生成的JSON字符串格式化(更易读),可以使用
- 处理特殊字符
- Fastjson会自动处理Java对象中的特殊字符,如在字符串属性中包含双引号等情况,确保生成的JSON字符串符合规范。
五、使用注解定制序列化和反序列化
- @JSONField注解
- 例如,在
User
类中,如果想指定某个字段在序列化和反序列化时的名称不同:
public class User { @JSONField(name = "user_name") private String username; // 其他属性和方法 }
- 这样,在序列化后的JSON字符串中,
username
字段将显示为user_name
。
- 例如,在
六、性能优化相关
- 对象池技术(高级用法)
- 在高并发场景下,可以考虑使用Fastjson的对象池技术来提高性能,减少对象创建和销毁的开销。但这需要深入了解Fastjson的内部机制并进行适当的配置。