json介绍

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式
json简单说就是javascript中的对象和数组
对象:{key:value,key:value,….}
数组:[”java”,”javascript”,”vb”,….]

注意:在json中它的两种结构可以互相嵌套
{key:[value1,value2],key:value}
[{name:xxx},{key:value},{key:value}]

Fastjson介绍

将java的对象转换成json数据也可以将一个json转换成java对象(不常用))Fastjson是阿里提供的一个开源json插件
对于json处理的插件 fastison jsonlib flexison Jackson

Fastjson使用介绍

  1. 导入相应的jar包

    相应jar包
  2. 演示 fastison将java对象转换成json数据

String json=JSONObject.toJsonString(java对象);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.junit.Test;
import com.alibaba.fastjson.JSONObject;

public class JsonTest {

//将一个Project对象转化为json
@Test
public void test1(){
//1.创建一个Project对象
Project p1 = new Project();
p1.setId(1);
p1.setCount(100);
p1.setName("电视机");
p1.setPrice(2000);
p1.setpDate(new Date());

//2.使用fastjson将p1转换成json数据
//{id:xxx,name:xxx,price:xxx,count:xxx}

String json = JSONObject.toJSONString(p1);
System.out.println(json);
}

//将List<Project>对象转换成json
@Test
public void test2(){
//1.创建一个List<Project>对象
Project p1 = new Project();
p1.setId(1);
p1.setCount(200);
p1.setName("电视机");
p1.setPrice(2000);

Project p2 = new Project();
p2.setId(2);
p2.setCount(200);
p2.setName("洗衣机");
p2.setPrice(1000);

List<Project> list = new ArrayList<Project>();
list.add(p1);
list.add(p2);

//将list转换成json
String json = JSONObject.toJSONString(list);
System.out.println(json);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.Date;
import com.alibaba.fastjson.annotation.JSONField;
public class Project {

@JSONField(name = "编号")
private int id;
@JSONField(name = "产品名称")
private String name;
@JSONField(name = "库存")
private int count;
@JSONField(name = "价格")
private double price;

@JSONField(name = "生产日期",format = "yyyy年MM月dd日")
private Date pDate;//生产日期

public Date getpDate() {
return pDate;
}
public void setpDate(Date pDate) {
this.pDate = pDate;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}

问题:将java对象转换成json时,名称是否可以自己来指定?
指定名称操作
问题:如果java对象中存在日期类型属性java.util.Date,是否可以用指定的格式来转换成json。
指定格式操作

问题:如果java类中的某些属性不想生成json中?
部分属性不生成json操作

在这里插入图片描述

问题:关于fastjson将java对象转换成json时的循环引用问题
循环引用问题
通过以下设置可以取消循环引用
取消循环引用