JSON是什么
JSON(JavaScript Object Notation)是一种轻量级的数据格式,它以“Key-Value”的格式来传输数据对象,JSON 的目的就是为了能替代 XML。相对于XML来说,JSON的占用空间较少,且更加易读。
语法
- 对象:对象包含于 {} 之间
- 属性:使用 Key-Value 对表示。属性之间使用逗号分割
- 对象数组:数组存放于 [] 之间 [elements]
- 元素:元素之间用逗号分开
- 值:值可以是字符串、数字、对象、数组、true、false、null(任意类型)
范例 person.json
{
"person": {
"id": "123",
"name": "name",
},
"students": [
"xiaoming",
"xiaohua",
"daming"
],
"persons": [
{
"id": "1",
"name": "xiaoming",
},
{
"id": "2",
"name": "xiaohua",
},
{
"id": "3",
"name": "daming",
}
]
}
使用FastJson解析JSON文件
使用例
Person类
public class Person{
private Integer id;
private String name;
.
.
.
//Getter and Setter
@Override
public String toString() {
return "id=" + this.id + "\nname=" + this.name;
}
}
- 读取文件内容
private static char[] content = null;
@BeforeClass
public static void beforeClass() throws IOException{
//读取json文件内容
File json = new File("src/parseJSON/JSON/person.json");
System.out.println();
FileReader reader = new FileReader(json);
BufferedReader buffReader = new BufferedReader(reader);
content = new char[(int)json.length()];
buffReader.read(content);
//关闭资源
buffReader.close();
reader.close();
}
- 解析json中的对象
@Test
public void parseObject(){
//解析文件内容
JSONObject jsonObject = JSONObject.parseObject(new String(content));
//获取json对象
JSONObject personObject = jsonObject.getJSONObject("person");
if(personObject != null){
Person person = new Person();
//获取json对象中的属性值
person.setId(personObject.getInteger("id"));
person.setName(personObject.getString("name"));
System.out.println(person.toString());
}
}
JSONObject对应的是json中的对象类型
JSONObject中的静态方法parseObject用于解析字符串成为一个json对象
JSONObject的getJSONObject方法用于从对象中获取对象
- 解析json中的数组
@Test
public void parseArray(){
//解析文件内容
JSONObject jsonObject = JSONObject.parseObject(new String(content));
//获取Array
JSONArray jsonArray = jsonObject.getJSONArray("students");
if(jsonArray != null){
for(int i = 0; i < jsonArray.size(); i++){
System.out.println(jsonArray.get(i));
}
}
}
JSONArray对应的是数组类型
JSONObject的getJSONArray方法用于从对象中获取数组
- 解析对象数组
@Test
public void parseObjectArray(){
JSONObject jsonObject = JSONObject.parseObject(new String(content));
//获取对象Array
JSONArray jsonArray = jsonObject.getJSONArray("persons");
for(int i = 0; i < jsonArray.size(); i++){
//解析数组中的对象
JSONObject item = JSONObject.parseObject(jsonArray.get(i).toString());
if(item != null){
Person person = new Person();
person.setId(item.getInteger("id"));
person.setName(item.getString("name"));
System.out.println(person.toString());
}
}
}
基本思路,先获取数组