com.alibaba.fastjson简介及常用API

2024-06-13 15:10:28 浏览数 (1)

一、fastjson简介

com.alibaba.fastjson是阿里巴巴集团开发的一款高性能、功能完善的Java JSON库。它提供了丰富的API,可以轻松地将Java对象序列化为JSON字符串,或将JSON字符串反序列化为Java对象。fastjson广泛应用于各种Java Web应用、移动应用以及大数据处理场景,具有稳定、高效、易用等特点。在平时开发中,一般需要吧接口响应数据装换成json返回给前端,所以fastjson使用范围还是很广的,也很频繁,所以本文主要来介绍fastjson常用API。

二、Maven引入

首先需要在pom文件引入依赖,也就是在Maven项目中使用fastjson,只需在项目的pom.xml文件中添加如下依赖:

代码语言:xml复制
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.37</version> 
</dependency>

三、常用API详解

fastjson提供了简洁易用的API,支持将Java对象序列化为JSON字符串,以及将JSON字符串反序列化为Java对象。这一功能使得开发者能够轻松地在Java对象和JSON数据之间进行转换,满足前后端数据交互的需求。主要常用API如下:

1. 将对象序列化成JSON字符串

代码语言:java复制
String com.alibaba.fastjson.JSON.toJSONString(Object object)

示例:

代码语言:java复制
User user = new User("张三", 25);

String userJsonStr = JSON.toJSONString(user);

System.out.println(userJsonStr); // 输出:{"age":25,"name":"张三"}

注意:虽然示例中使用了JSONObject.toJSONString(user),但推荐使用JSON.toJSONString(object),因为JSON类是fastjson库的入口类,提供了更多功能和更好的兼容性。

2. 将JSON字符串反序列化成对象

代码语言:java复制
<T> T com.alibaba.fastjson.JSON.parseObject(String text, Class<T> clazz)

示例:

代码语言:java复制
String userJsonStr = "{"age":25,"name":"张三"}";

User user1 = JSON.parseObject(userJsonStr, User.class);

System.out.println(user1); // 输出:User{name='张三', age=25}

以上两钟其实算是开发中比较常用的了,对象转json字符串,json字符串转对象。

3. 将JSON字符串反序列化成JSON对象

com.alibaba.fastjson.JSONObject com.alibaba.fastjson.JSON.parseObject(String text)方法用于将JSON字符串反序列化为JSONObject对象。

示例:

代码语言:java复制
String userJsonStr = "{"age":25,"name":"张三"}";
JSONObject userJsonObj = JSON.parseObject(userJsonStr);
System.out.println(userJsonObj); // 输出:{"age":25,"name":"张三"}

首先定义了一个JSON字符串,然后使用JSON.parseObject()方法将其反序列化为JSONObject对象。输出的JSONObject对象包含了JSON字符串中的所有键值对。

4. 根据key得到JSON中的JSON数组

com.alibaba.fastjson.JSONArray com.alibaba.fastjson.JSONObject.getJSONArray(String key)方法用于从JSONObject对象中获取指定key对应的JSON数组。

代码语言:java复制
String userJsonStr = "{"hobbies":["篮球","足球"]}";
JSONObject userJsonObj = JSON.parseObject(userJsonStr);
JSONArray hobbies = userJsonObj.getJSONArray("hobbies");
System.out.println(hobbies); // 输出:["篮球","足球"]

首先定义了一个包含JSON数组的JSON字符串,然后使用JSON.parseObject()方法将其反序列化为JSONObject对象。接着,使用getJSONArray()方法获取了hobbies key对应的JSON数组。

5. 根据下标拿到JSON数组的JSON对象

com.alibaba.fastjson.JSONObject com.alibaba.fastjson.JSONArray.getJSONObject(int index)方法用于从JSONArray对象中获取指定下标的JSON对象。这个方法接受一个int类型的下标作为参数,并返回一个JSONObject对象。示例:

代码语言:java复制
String userJsonStr = "{"hobbies":[{"name":"篮球","level":"业余"},{"name":"足球","level":"专业"}]}";
JSONObject userJsonObj = JSON.parseObject(userJsonStr);
JSONArray hobbies = userJsonObj.getJSONArray("hobbies");
JSONObject basketball = hobbies.getJSONObject(0);
System.out.println(basketball); // 输出:{"level":"业余","name":"篮球"}

在这个示例中,定义了一个包含JSON对象的JSON数组,然后使用JSON.parseObject()方法将其反序列化为JSONObject对象。使用getJSONArray()方法获取了hobbies key对应的JSON数组,最后使用getJSONObject()方法获取了数组中第一个JSON对象。

6. 根据key拿到JSON的字符串值

String com.alibaba.fastjson.JSONObject.getString(String key)方法用于从JSONObject对象中获取指定key对应的字符串值。示例:

代码语言:java复制
String userJsonStr = "{"name":"张三","age":"25"}";
JSONObject userJsonObj = JSON.parseObject(userJsonStr);
String name = userJsonObj.getString("name");
System.out.println(name); // 输出:张三

上述代码定义了一个包含字符串值的JSON字符串,然后使用JSON.parseObject()方法将其反序列化为JSONObject对象。然后使用getString()方法获取了name key对应的字符串值。

7. 根据key拿到JSON的int值

int com.alibaba.fastjson.JSONObject.getIntValue(String key)方法用于从JSONObject对象中获取指定key对应的整数值。这个方法接受一个String类型的key作为参数,并返回一个int类型的值。代码案例如下

代码语言:java复制
String userJsonStr = "{"name":"张三","age":25}";
JSONObject userJsonObj = JSON.parseObject(userJsonStr);
int age = userJsonObj.getIntValue("age");
System.out.println(age); // 输出:25

在案例代码中先定义了一个包含整数值的JSON字符串,然后使用JSON.parseObject()方法将其反序列化为JSONObject对象。然后使用getIntValue()方法获取了age key对应的整数值。

8. 根据key拿到JSON的boolean值

boolean com.alibaba.fastjson.JSONObject.getBooleanValue(String key)方法用于从JSONObject对象中获取指定key对应的布尔值。如下代码

代码语言:java复制
String userJsonStr = "{"name":"张三","isStudent":false}";
JSONObject userJsonObj = JSON.parseObject(userJsonStr);
boolean isStudent = userJsonObj.getBooleanValue("isStudent");
System.out.println(isStudent); // 输出:false

这是其实平时使用也是比较少的,大家可以了解一下就行。

以上就是fastjson简介及常用API,其实也不用强行记忆,平时开发孰能生巧。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

0 人点赞