生成和解析JSON
1.什么是JSON,JSON的作用是什么,如何编写JSON?
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和表示数据.
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言.
例如:
一个java对象转换成json对象以后是什么样子?
package com.wangxing.jsondemo1.bean;
public class Person {
private int perid;
private String pername;
private int perage;
private String peraddress;
public String getPeraddress() {
return peraddress;
}
public void setPeraddress(String peraddress) {
this.peraddress = peraddress;
}
public int getPerid() {
return perid;
}
public void setPerid(int perid) {
this.perid = perid;
}
public String getPername() {
return pername;
}
public void setPername(String pername) {
this.pername = pername;
}
public int getPerage() {
return perage;
}
public void setPerage(int perage) {
this.perage = perage;
}
}
//创建一个person类的对象
Person person1=new Person();
person1.setPerid(1001);
person1.setPername("zhangsan");
person1.setPerage(23);
person1.setPeraddress("西安");
//将person1这个java对象转换成json对象对应的字符串数据
{"perid":1001,"pername":"zhangsan","perage":23,"peraddress":"西安"}
上面是将一个java对象写成json的样子。
假设现在有一组对象需要写成json的样子,那应该怎么写?
Person person1=new Person();
person1.setPerid(1001);
person1.setPername("zhangsan");
person1.setPerage(23);
person1.setPeraddress("西安");
Person person2=new Person();
person2.setPerid(1002);
person2.setPername("lisi");
person2.setPerage(24);
person2.setPeraddress("北京");
Person person3=new Person();
person3.setPerid(1003);
person3.setPername("wangwu");
person3.setPerage(25);
person3.setPeraddress("上海");
//创建一个保存person对象的集合
List<Person> personlist=new ArrayList<Person>();
//将上面创建的3个person对象保存到集合中
personlist.add(person1);
personlist.add(person2);
personlist.add(person3);
将保存java对象的集合写成json的样子。
[
{"perid":1001,"pername":"zhangsan","perage":23,"peraddress":"西安"},
{"perid":1002,"pername":"lisi","perage":24,"peraddress":"北京"},
{"perid":1003,"pername":"wangwu","perage":25,"peraddress":"上海"}
]
注意:
- 用一组“{}”包围键/值对组合,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值,多个键/值对组合中间用“,”分隔,这就表示一个json对象。
- 用一组“[]”包围值/json对象这就表示一个json数组。json数组是用来保存java数组数据/集合数据。
- json对象中数字值和布尔值是不需要双引号。
通常情况下我们所遇到的json数据都是json对象中包含json数组,json数组中又包含json对象的复杂形式。
package com.wangxing.test2;
/**
* 保存地址信息的java类
* @author Administrator
*
*/
public class PersonAddress {
private String type; //地址类型【家庭/工作】
private String info; //地址信息
public String gettype(){
return type;
}