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使用介绍
导入相应的jar包
演示 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 {
@Test public void test1(){ Project p1 = new Project(); p1.setId(1); p1.setCount(100); p1.setName("电视机"); p1.setPrice(2000); p1.setpDate(new Date()); String json = JSONObject.toJSONString(p1); System.out.println(json); } @Test public void test2(){ 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); 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中?
问题:关于fastjson将java对象转换成json时的循环引用问题
通过以下设置可以取消循环引用