Fastjson 是一个 Java 库,可用于将 Java 对象转换为其 JSON 表示形式。它还可用于将 JSON 字符串转换为等效的 Java 对象。Fastjson 可以处理任意 Java 对象。即使是一些预先存在的没有源码的对象
maven
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.24</version>
</dependency>
定义一个类
public static class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
将类转为json
fastjson提供了JSONObject(fastJson提供的json对象) 和 JSONArray(fastJson提供json数组对象)对象,JSONObject和JSONArray又都继承了JSON对象,JSON对象提供了toJSONString静态方法供我们将类转换成JSON
Person person = new Person("Nivia", 19);
String jsonString = JSON.toJSONString(person);
System.out.println(jsonString);//{"age":19,"name":"Nivia"}
json中主要信息包括为对象的属性和值
toJSONString方法有若干重载方法,带有不同的参数,其中常用的包括以下几个:
将json转化为类
JSON对象提供parse、parseObject、parseArray方法供用户进行反序列化
Person newPerson = JSON.parseObject(jsonString, Person.class);
System.out.println(newPerson.getName());//Nivia
需要注意:代转换JSON对应的类需要有默认无参的构造函数,否则会报错
public Person(){}
还需要注意:在调用转换后的对象的相应getter方法,如果类没有定义setter方法,那将会返回默认值
大概能猜出转换过程:通过Class对象进行实例化,调用的是无参构造方法,通过setter方法设置值,这样转换后的对象就能封装有原本对象属性和对应值了
这三个方法同样有很多重载方法,带有不同参数:
可以利用此注解自定义输出,包括控制字段排序、序列化标记等
@JSONField(name="AGE")
private int age;
生成json结果
{"AGE":19,"name":"Nivia"}
作用对象: