FastJson的基本使用
一、导入FastJson的依赖
<!-- 当前最新版 -->
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
二、主要类简介
- JSON(主要工具类)
- JSONObject(JSON的子类,Map结构,将json转换成了Map(key-value)存储)
- JSONArray(JSON的子类,LIst结构,将json数组换成了Objectc对象集合存储)
三、测试基本类
// 省略了构造方法和getter/setter方法
public class Person {
private String name;
private Integer age;
private Dog dog;
}
public class Dog {
private String name;
private Integer age;
}
四、常用方法
主要分成两大类,第一类是将对象转换成其他数据格式(字符串,字节数组,对象,流等),第二类就是相反的作用,将其他类型数据(字符串,字符/字节数组,流等)转换成对象(指定对象,JSONObject等)
- 将对象转换成JSON字符串
Person person = new Person("person",new Dog("dog",1));
//默认会将空属性剔除
JSON.toJSONString(person);
输出结果为 {"dog":{"age":1,"name":"dog"},"name":"person"}
还有其他参数,例如序列化器等,很少用到,用到再记录
- 将json字符串转换成指定对象
字符串没有的属性也为空
String per = "{\"dog\":{\"age\":1,\"name\":\"dog\"},\"name\":\"test\",\"age\":null}";
JSON.parseObject(per, Person.class);
- 将json字符串转换成JSONObject对象(其实就是一个Map)
String per = "{\"dog\":{\"age\":1,\"name\":\"dog\"},\"name\":\"test\",\"age\":null}";
JSONObject map = JSON.parseObject(per);
// 输出结果为 test
System.out.println(map.get("name"));
// 输出结果为字符串类型 结果为 {"name":"dog","age":1}
System.out.println(map.get("dog"));
可用于在其基础上追加一些属性,再将其转成json字符串,扩充json字符串
可用于判断json中是否包含/剔除某个key或者value,并进行修改
(map有的方法JSONObject都有)
// 扩充json的属性
map.put("address","SH");
// 再将其转成json字符串
map.toJSONString();
// 是否包含 name 的key 返回boolean
map.containsKey("name");
// 是否包含 1 这个 value
map.containsValue("1");
// 剔除某个key-value
map.remove("name");
- 将对象集合转换成字符串
List<Person> list = Lists.newArrayList();
// 追加元素
...
// 输出结果为一个JSON数组字符串
JSON.toJSONString(list);
- 将json数组字符串转换成指定对象集合
String s = "[{\"dog\":{\"age\":11,\"name\":\"dog1\"},\"name\":\"zhangsan1\"},{\"dog\":{\"age\":12,\"name\":\"dog2\"},\"name\":\"zhangsan2\"},{\"dog\":{\"age\":13,\"name\":\"dog3\"},\"name\":\"zhangsan3\"},{\"dog\":{\"age\":14,\"name\":\"dog4\"},\"name\":\"zhangsan4\"}]";
List<Person> people = JSON.parseArray(s, Person.class);
还可以转换成其他类型的集合
//将json转换成Set
Set set = JSON.parseObject(json,new TypeReference<HASHSET>(){});
// 将类型转换的 TypeReference 的范型修改成其他的即可
- 将json数组字符串转换成JSONArray对象
String s = "[{\"dog\":{\"age\":11,\"name\":\"dog1\"},\"name\":\"zhangsan1\"},{\"dog\":{\"age\":12,\"name\":\"dog2\"},\"name\":\"zhangsan2\"},{\"dog\":{\"age\":13,\"name\":\"dog3\"},\"name\":\"zhangsan3\"},{\"dog\":{\"age\":14,\"name\":\"dog4\"},\"name\":\"zhangsan4\"}]";
// 集合
JSONArray arr = JSON.parseArray(s);
Object o = objects1.get(0);
// 输出结果为 {"name":"zhangsan1","dog":{"name":"dog1","age":11}} 字符串
- 日期类型转换成指定格式
Date date = new Date();
String json = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss.SSS");