JOSN用于給數據添加標記全稱是javaScript Object Notation
是一種輕量級的數據交換格式
這種格式最早應用于javaScript中,JSON 語法是javaScript對象表示語法的子集
在java中提供了解析JSON格式的類庫
具有良好的可讀性和快速編寫的特性
Json里的數據以一種鍵值對的形式存在
JSON 有三種首先是java官方的解析開元jar包 還有一種是谷歌的JSON 還有一種阿里的Fast-JSON
{} 雙括號表示對象
[] 中括號表示數組
"" 雙引號內是屬性或值
: 冒號表示后者是前者的值(這個值可以是字符串、數字、也可以是另一個數組或對象)
所以 {"name": "Michael"} 可以理解為是一個包含name為Michael的對象
而[{"name": "Michael"},{"name": "Jerry"}]就表示包含兩個對象的數組
當然了,你也可以使用{"name":["Michael","Jerry"]}來簡化上面一部,這是一個擁有一個name數組的對象
首先是java官方的JSON
JSON解析
package com.qf.demo;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Test3 {
public static void main(String[] args) {
String string="[{name:'zhangsan',age:20},{name:'lisi',age:21},{name:'wangwu',age:22}]";
try {
ArrayList<Person> persons = new ArrayList<>();
JSONArray array = new JSONArray(string);
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);// 下標從0開始
String name = object.getString("name");
int age = object.getInt("age");
Person person = new Person(name, age);
persons.add(person);
}
System.out.println(persons);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
反向操作
package com.qf.demo2;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Test3 {
public static void main(String[] args) {
// {"no":1,"name":"android","employees":[{"name":"zhangsan","age":3},{"name":"lisi","age":5},{"name":"wangw","age":2}]}
JSONObject object = new JSONObject();
try {
object.put("no", 1);
object.put("name", "android");
JSONArray array = new JSONArray();
JSONObject object2 = new JSONObject();
object2.put("name", "zhangsan");
object2.put("age", 3);
array.put(object2);
JSONObject object3 = new JSONObject();
object3.put("name", "lis");
object3.put("age", 5);
array.put(object3);
JSONObject object4 = new JSONObject();
object4.put("name", "wangwu");
object4.put("age", 6);
array.put(object4);
object.put("employees", array);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(object);
}
}