fastjson介绍
FastJson是阿里巴巴的的开源库,用于对JSON格式的数据进行解析和打包。
特点如下:
- 能够支持将java bean序列化成JSON字符串,也能够将JSON字符串反序列化成Java bean。
- 顾名思义,fastjson操作 JSON的速度是非常快的。
- 无其他包的依赖。
- 使用比较方便。
maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<!--(起码1.2.48以上)因为这个版本一下存在漏洞-->
<version>版本根据自己需要</version>
</dependency>
fastjson常用API
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。
java类转换为json字符串:
/**
* java对象转换为json字符串
*/
@Test
public void objToJson() {
//简单对象转换
User user = new User("root", "123456");
//调用toJSONString()
String userJson = JSON.toJSONString(user);
System.out.println("java类转换为json串:" + userJson);
//集合转json串
User user1 = new User("zhangsan", "123456");
User user2 = new User("lisi", "000");
List<User> users = new ArrayList<User>();
users.add(user1);
users.add(user2);
//调用toJSONString()
String usersjson = JSON.toJSONString(users);
System.out.println("集合转json串:" + usersjson);
//复杂java类转换对象
UserGroup userGroup = new UserGroup("userGroup", users);
//调用toJSONString()
String userGroupJson = JSON.toJSONString(userGroup);
System.out.println("复杂java类转换json串:" + userGroupJson);
}
结果
java类转换为json串:{"password":"123456","username":"root"}
集合转json串:[{"password":"123456","username":"zhangsan"},{"password":"000","username":"lisi"}]
复杂java类转换json串:{"name":"userGroup","users":[{"password":"123456","username":"zhangsan"},{"password":"000","username":"lisi"}]}
json字符串转为java类:
/**
* json字符串转为java类
* 注:字符串中使用双引号需要转义 (" --> \"),这里使用的是单引号,易读性会好很多。
* json串以“{}”包裹,转换为java类时,使用:parseObject();
* json串以“[]”包裹,转换为java类时,使用:parseArray();
*/
@Test
public void jsonToObj(){
/* json字符串转简单java对象
* 字符串:{"password":"123456","username":"dmego"}
*/
String jsonStr1 = "{'password':'123456','username':'ggf'}";
// 调用parseObject()
User user = JSON.parseObject(jsonStr1, User.class);
System.out.println("json字符串转简单java对象:"+user.toString());
/*
* json字符串转List<Object>对象
* 字符串:[{"password":"123123","username":"zhangsan"},
* {"password":"321321","username":"lisi"}]
*/
String jsonStr2 = "[{'password':'123123','username':'zhangsan'},{'password':'321321','username':'lisi'}]";
// 调用parseArray()将字符串转为集合
List<User> users = JSON.parseArray(jsonStr2, User.class);
System.out.println("json字符串转List<Object>对象:"+users.toString());
/*json字符串转复杂java对象
* 字符串:{"name":"userGroup","users":[{"password":"123123","username":"zhangsan"},{"password":"321321","username":"lisi"}]}
* */
String jsonStr3 = "{'name':'userGroup','users':[{'password':'123123','username':'zhangsan'},{'password':'321321','username':'lisi'}]}";
UserGroup userGroup = JSON.parseObject(jsonStr3, UserGroup.class);
System.out.println("json字符串转复杂java对象:"+userGroup);
}
结果
json字符串转简单java对象:User{username='ggf', password='123456'}
json字符串转List<Object>对象:[User{username='zhangsan', password='123123'}, User{username='lisi', password='321321'}]
json字符串转复杂java对象:UserGroup{name='userGroup', users=[User{username='zhangsan', password='123123'}, User{username='lisi', password='321321'}]}
读取本地JSON文件 转
@Test
public void jsonToComplexObj() {
// 读取类路径下的caipu.json文件,这里使用了第三方工具hutool进行读取json文件
// 工具类参见:https://hutool.cn/docs/#/
String jsonStr = FileUtil.readUtf8String(new File("text.json"));
System.out.println(jsonStr);
// 转换为java类
ResponseData resp = JSON.parseObject(jsonStr, ResponseData.class);
System.out.println(resp);
// 通过对象操作数据
// 获取响应码resultcode
System.out.println(resp.getResultcode());
// 获取响应数据
ResponseData.ResultBean result = resp.getResult();
System.out.println("result响应数据:" + result);
}
/**
* 对json串的操作
*/
@Test
public void operateJson() {
// 读取本地json文本
String jsonStr = FileUtil.readUtf8String(new File("text.json"));
// 创建json对象
JSONObject jsonObj = JSONObject.parseObject(jsonStr);
// 操作json内容
// 获取响应码resultcode
System.out.println(jsonObj.get("resultcode"));
// 获取响应信息reason
System.out.println(jsonObj.getString("reason"));
// 获取data
JSONObject resJsonObj = (JSONObject)jsonObj.get("result");
System.out.println(resJsonObj.getString("data"));
}