首先在使用FastJson时,先去导入jar包,这个jar是阿里巴巴开源的,我们可以到maven仓库中下载.
这是我的测试类:
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.dao.Customer;
import com.dao.Person;
import com.dao.Role;public class TestFastJson {
/*
* 对象转换成json字符串
*/
@Test
public void run1() { Customer customer = new Customer();
customer.setId(100);
customer.setName("Agust");
String jsonString = JSON.toJSONString(customer);
System.out.println(jsonString);
}
/*
* json字符串转换成对象
*/
@Test
public void run2() {
String jsonString = "{\"id\":100,\"name\":\"Agust\"}"; Customer object = JSON.parseObject(jsonString, Customer.class);
System.out.println(object);
} /*
* 添加同一个对象时 禁止使用引用地址$ref:[{"id":100,"name":"Agust"},{"$ref":"$[0]"}]
*
*/
@Test
public void run3() { List<Customer> list = new ArrayList<>();
Customer customer = new Customer();
customer.setId(100);
customer.setName("Agust");
list.add(customer);
list.add(customer);
String jsonString = JSON.toJSONString(list, SerializerFeature.DisableCircularReferenceDetect);
System.out.println(jsonString);
}
/*
* json数组转换成实体集合
*
*/
@Test
public void run4() { String jsonString = "[{\"id\":100,\"name\":\"Agust\"},{\"id\":100,\"name\":\"Agust1\"}]";
List<Customer> parseArray = JSON.parseArray(jsonString, Customer.class);
for (Customer customer : parseArray) {
System.out.println(customer);
} }
/*
*
* Person中引用Role,在Role中引用了Person
*
* 防止循环引用造成栈内存溢出,在实体中加入注解
*
* @JSONField(serialize = false) 禁止循环引用
*
*/ @Test
public void run5() { Person person = new Person();
person.setName("小子");
Role role = new Role();
role.setName("姑娘");
person.setrName(role);
role.setpName(person);
String jsonString = JSON.toJSONString(role, SerializerFeature.DisableCircularReferenceDetect);
System.out.println(jsonString);
}
}
下面是我测试需要的三个实体类
public class Customer {
private int id;
public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} private String name;
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public String toString() {
return "Customer [id=" + id + ", name=" + name + "]";
}
}
import com.alibaba.fastjson.annotation.JSONField;
public class Person {
private String name;
//这是为了阻止循环引用
@JSONField(serialize = false)
private Role rName; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Role getrName() {
return rName;
} public void setrName(Role rName) {
this.rName = rName;
}
}public class Role {
private String name;
private Person pName; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Person getpName() {
return pName;
} public void setpName(Person pName) {
this.pName = pName;
}
}