json的含義及使用
json的含義及使用
JSON(JavaScript物件表示法 JavaScript Object Notation),是儲存和交換文字資訊的語法,輕量級的文字資料交換格式,類似XML,但是比XML更小、更快、更容易解析。
JSON獨立於各種程式語言平臺,並且幾乎所有的主流程式語言都內建了對JSON資料格式的支援。
JSON語法規則
1、資料以名/值 對的形式表示
2、資料之間以逗號分隔
3、花括號儲存物件
4、方括號儲存陣列
JSON值
JSON名值對包括欄位名稱(包含在雙引號中),後面一個冒號,然後是值,如:
"username": "Jessica"
JSON值可以包含以下多種型別:
數字(整數和浮點數)
字串(在雙引號中)
邏輯值(true或false)
陣列(在方括號中)
物件(在花括號中)
null
JSON物件包含在花括號中,可以包含多個名/值對,其值可以為陣列;JSON陣列包含在方括號中,可以包含多個物件。JSON既可以以花括號開頭,也可以以方括號開頭,JSON物件和JSON陣列可以互相巢狀,如:
{
"users": [
{"username":"yzy",age:30},
{"username":"yzy1",age:23},
{"username":"yzy2",age:42}
]
}
JSON解析和序列化
早期的JSON解析器基本上就是使用JavaScript的eval()函式。由於JSON是JavaScript語法的子集,因此eval()函式可以解析並返回JavaScript物件和陣列。
ECMAScript 5對解析JSON的行為進行了規範,定義了全域性物件JSON。
關於後臺json的使用
1、json有兩種格式
(1)、物件
例子:{"key1":value1,"key2":value2,"key3":value3,...}
(2)、
例子:[{"key1":value1,"key2":value2,"key3":value3},{"key1":value1,"key2":value2,"key3":value3}...]
後臺例項:
public static <T> T parseJSON(String json, Type type) {
Gson gson = new Gson();
T info = gson.fromJson(json, type);
return info;
}
public static void main(String[] args) {
Gson gson = new Gson();
jsonModel j = new jsonModel();
j.setAge(11);
j.setName("哈雷路亞");
j.setId(23);
//json生成物件
String json = gson.toJson(j);
System.out.println("生成物件:"+json);
//json生成物件陣列
List<jsonModel> list=new ArrayList<jsonModel>();
list.add(j);
jsonModel j1=new jsonModel();
j1.setAge(56);
j1.setName("你好");
j1.setId(89);
list.add(j1);
String json2 = gson.toJson(list);
System.out.println("生成陣列:"+json2);
//gron解析json物件字串
String age = "";
String id = "";
String name = "";
String title1 = "{'age':'11','name':'哈雷路亞','id':'23'}";
List<JSONObject> listGson=new ArrayList<JSONObject>();
JSONObject result = gson.fromJson(title1, JSONObject.class);
age = result.getAge();
id = result.getId();
name = result.getName();
System.out.println(age+","+id+","+name);
//gron解析json物件陣列字串
List<JSONObject> info = new ArrayList<JSONObject>();
String title = "[{'age':'11','name':'哈雷路亞','id':'23'},{'age':'21','name':'哈1亞','id':'2223'}]";
try {
info = parseJSON(title, new TypeToken<ArrayList<JSONObject>>() {}.getType());
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
關於前端json的使用
使用JSON.parse()把字串解析為JSON物件或陣列。
//返回JSON物件 log格式化輸出log內容
var jsonStr1 = '{"username":"Jessica","age":23}';
var jsonObj = JSON.parse(jsonStr1);
console.log(jsonObj.username); //Jessica
console.log(jsonObj.age) //23
//返回JSON陣列
var jsonStr2 = '[{"username":"Jacky","age":30}, {"username":"Jessica","age":23}]';
var jsonArr = JSON.parse(jsonStr2);
for(var i=0;i<jsonArr.length;i++) {
console.log(jsonArr[i].username); //Jacky Jessica
JSON序列化
使用JSON.stringify()把JSON物件或陣列序列化為字串。
//序列化JSON物件 log格式化輸出log內容
var jsonObj = {
"username": "Jessica",
"age": 23
};
var jsonStr1 = JSON.stringify(jsonObj);
console.log(jsonStr1); //{"username":"Jessica","age":23}
//序列化JSON陣列
var jsonArr = [
{"username":"Jacky","age":30},
{"username":"Jessica","age":23}
];
var jsonStr2 = JSON.stringify(jsonArr, null, 2);
console.log(jsonStr2);
/* 輸出結果:
[
{
"username": "Jacky",
"age": 30
},
{
"username": "Jessica",
"age": 23
}
]
*/