Java的FastJson使用笔记 - 相关操作
简介
FastJson是一个用于JSON相关操作的一个工具Jar
可以实现序列化对象为JSON数据、也可以反序列化JSON为对象数据。
使用评价非常好用
导入
话不多说,利用Maven来导入项目
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.41</version>
</dependency>
这里我用的是1.2.41 Version
认识FastJSON类
学习FastJSON涉及到的相关类有
- JSONArray
- JSONObject
- JSON
以上是一般常用的FastJSON类的操作
接下来我们来看看**使用方法**
使用方法
场景一
我们现在需要将一个字符串转化为JSON数据后获取 name 值
// 模板JSON数据
String str = "{\"age\":\"24\",\"name\":\"cool_summer_moon\"}";
//通过JSON类转换字符串为JSON数据
JSONObject jsonData = JSON.parseObject(str);
System.out.println("通过JSON.get方法获取name值:" + jsonData.get("name"));
System.out.println("通过JSON.get方法获取age值:" + jsonData.get("age"));
结果
通过JSON.get方法获取name值:cool_summer_moon
通过JSON.get方法获取age值:24
场景二
我们现在需要将一个JSON数据转化为字符串
// 通过JSON类下的toJSONString 来将JSON数据转化为字符串格式
System.out.println("JSON数据 转化为字符串 方法一:" + JSON.toJSONString(jsonData));
// 通过JSONObject下的toJSONString 来将JSON数据转化为字符串格式
System.out.println("JSON数据 转化为字符串 方法二:" + jsonData.toJSONString());
结果
JSON数据 转化为字符串 方法一:{"name":"cool_summer_moon","age":"24"}
JSON数据 转化为字符串 方法二:{"name":"cool_summer_moon","age":"24"}
小结
现在我们已经学习了如何利用FastJSON的相关类来进行简单操作
可能大家会有想法,能不能用FastJSON来操作JSON文件呢?当然可以,看我下面的Code示例
操作JSON文件
既然是操作JSON文件,那肯定无疑跟我们的File 的IO打交道
对于IO不了解的小伙伴可以看一下我以前的文章
定义IO工具类
IOUtils.class
/**
* 读取JSON文件数据返回StringBuilder以便交给FastJSON去处理
*
* @param file
* @return
*/
public static StringBuilder readerJSON(File file) {
StringBuilder stringBuilder = new StringBuilder();
try {
BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
String str = "";
while ((str = bufferedReader.readLine()) != null) {
stringBuilder.append(str);
}
bufferedReader.close();
return stringBuilder;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 定义一个写入JSON数据文件的方法
*
* @return
*/
public static boolean writeObjectToJson(File file, String data) {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
//写入数据
writer.write(data);
writer.close();
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
思路划分
单操作JSON文件(不含对象操作)
- 定义JSON文件的File
- 通过输入流和输出流进行读写操作
- 通过FastJSON进行操作
示例
String str = "{\"age\":\"24\",\"name\":\"cool_summer_moon\"}";
File file = new File("d:/db.json");
// 通过输入流写入数据
IOUtils.writeObjectToJson(file,str);
// 通过输出流读写数据
StringBuilder jsonString = IOUtils.readerJSON(file);
// 定义JSONObject 来进行获取操作
JSONObject jsonObject = JSONObject.parseObject(jsonString.toString());
System.out.println("通过IO流读写JSON数据所获得的name:" + jsonObject.get("name"));
System.out.println("通过IO流读写JSON数据所获得的age:" + jsonObject.get("age"));
db.json
{"age":"24","name":"cool_summer_moon"}
结果
通过IO流读写JSON数据所获得的name:cool_summer_moon
通过IO流读写JSON数据所获得的age:24
单操作JSON文件(含对象操作)
- 定义JSON文件的File
- 定义实体类拥有get set方法
- 通过输入流和输出流进行读写操作实体类
- 通过FastJSON进行序列化对象
示例(用了lombok的Data注解) 不使用注解的可以定义get set方法
User.class
@Data
public class User {
public User()
{
}
public User(String uid,String memberUid)
{
this.uid = uid;
this.memberUid = memberUid;
}
private String uid;
private String memberUid;
实现
// 定义File
File file = new File("d:/db.json");
// 定义实体类数据
User user = new User("111","222");
// 写入实体数据,并序列化为JSON格式
IOUtils.writeObjectToJson(file,JSON.toJSONString(user));
// 读取实体数据,并为反序列化对象做准备
StringBuilder userJson = IOUtils.readerJSON(file);
// 定义JSONObject 进行反序列化
User userObject = JSONObject.parseObject(userJson.toString(),User.class);
// 序列化完毕后直接通过 get set方式进行获取
System.out.println("序列化User对象后的获取操作 uidValue:" + userObject.getUid());
System.out.println("序列化User对象后的获取操作 memberValue:" + userObject.getMemberUid());
db.json
{"memberUid":"222","uid":"111"}
结果
序列化User对象后的获取操作 uidValue:111
序列化User对象后的获取操作 memberValue:222
结束语
FastJSON特别方便对于JSON数据的操作也很简便,网络上的相关教程也层出不穷。
- 本人学习笔记-FastJSON分享给大家
- 有不足之处欢迎指出