在 Java 领域,JSON 作为轻量级数据交换格式广泛使用。对于高性能、高并发场景,选择一个高效的 JSON 序列化和反序列化库非常重要。Fastjson 是由阿里巴巴开发的开源 JSON 处理库,以其卓越的性能和简洁的 API 设计深受开发者喜爱。

后端常用的JSON序列化与反序列化的技术

首先我们引入依赖

<!-- JSON 解析器和生成器 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version>
</dependency>

那我们一般项目中最常用的就是JSON.toJSONString和JSON.parseObject,这可以简单理解为js中的JSON.stringify和JSON.parse,下面是个简单的例子:

Map<String, Object> map = new HashMap<>();
map.put("name", "WFT111");
map.put("age", 18);
// 序列化为字符串
String str = JSON.toJSONString(map);
System.out.println(str);
// 将字符串反序列化为对象
Map data = JSON.parseObject(str, Map.class);
System.out.println(data);

fastjson中的除了上面的之外还有JSONObject.toJSONString()和JSONObject.parseObject()方法,也可以转为字符串,但使用场景可能有所不同。

  • 适用对象不同:JSON.toJSONString可以直接序列化任意Java对象(包括自定义类),而 JSONObject.toJSONString仅适用于 JSONObject类型的对象。
  • 调用方式不同:JSON.toJSONString是静态方法,可以直接通过类名调用;JSONObject.toJSONString 是实例方法,必须通过 JSONObject的实例来调用。
  • 功能侧重点:如果你需要序列化任何类型的Java对象到JSON字符串,通常会使用 JSON.toJSONString。如果你已经有一个 JSONObject并且想得到它的字符串表示,那么你会使用 JSONObject.toJSONString。

在实际开发中,如果只是简单的对象到JSON字符串的转换,JSONO.toJSONString 通常是更通用的选择 ,因为它可以接受任何Java类型的对象