SON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,常用于在不同平臺之間傳輸數(shù)據(jù)。它的設(shè)計靈感來自于 JavaScript 中的對象字面量表示法,但已成為一種獨(dú)立于編程語言的通用數(shù)據(jù)格式。JSON 的主要特點(diǎn)包括:
1.易讀性:JSON 使用簡潔明了的文本表示數(shù)據(jù)結(jié)構(gòu),易于人類閱讀和編寫。
2.易解析性:JSON 在大多數(shù)編程語言中都有內(nèi)置的解析器和序列化器,因此易于在不同平臺和環(huán)境中處理和解釋。
3.數(shù)據(jù)類型:JSON 支持多種數(shù)據(jù)類型,包括字符串、數(shù)字、布爾值、數(shù)組、對象和 null。
4.靈活性:JSON 具有很高的靈活性,可以表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu),包括嵌套對象和數(shù)組。
5.可擴(kuò)展性:JSON 支持用戶定義的數(shù)據(jù)類型和擴(kuò)展,使得它可以滿足各種不同的需求。
JSON 的基本語法包括:
- 鍵值對:使用冒號 : 分隔鍵和值。
- 對象:使用花括號 {} 表示對象,對象中的每個成員由鍵值對組成,鍵和值之間使用冒號分隔,成員之間使用逗號分隔。
- 數(shù)組:使用方括號 [] 表示數(shù)組,數(shù)組中的每個元素可以是任意類型的值,元素之間使用逗號分隔。
- 字符串:使用雙引號 " 包裹字符串值。
例如,一個簡單的 JSON 對象可能如下所示:
{
"name": "John Doe",
"age": 30,
"hobbies": ["hiking", "reading", "photography"],
"address": {
"city": "New York",
"zip": "10001"
}
}
JSON 技術(shù)被廣泛應(yīng)用于 Web 開發(fā)、移動應(yīng)用、數(shù)據(jù)交換等領(lǐng)域,它是現(xiàn)代應(yīng)用程序中常見的數(shù)據(jù)交換格式之一。JSON 的簡潔性、易用性和通用性使得它成為了數(shù)據(jù)交換和存儲的重要工具。#為一年后的小目標(biāo)不斷努力奮斗#
,JSON(JavaScript Object Notation):是一種輕量級的數(shù)據(jù)交互格式,基于 ECMAScript 的一個子集,采用完全獨(dú)立于編程語言的文本格式來存儲和表示數(shù)據(jù)。在JSON出現(xiàn)之前,常用XML來傳遞數(shù)據(jù),XML是一種純文本格式,適合在網(wǎng)絡(luò)上交換數(shù)據(jù)。JSON 比 XML 更小、更快,更易解析,JavaScript原生支持JSON。
2,JSON語法結(jié)構(gòu):JSON數(shù)據(jù)由鍵值對組成,每個鍵值對之間用逗號分隔,整個數(shù)據(jù)以大括號 {} 包裹表示一個對象,或者以中括號 [] 包裹表示一個數(shù)組。基本語法結(jié)構(gòu)為:
對象(Object):{} 包裹,鍵對應(yīng)的值之間使用冒號,健值對之間用逗號。如
{ "name": "張3", "age": 30 }
數(shù)組(Array): [] 包裹,元素之間使用逗號分隔。如:
[ "apple", "banana", "orange" ]
[ {"name": "張3", "age": 30}, {"name": "李4", "age": 25} ]
3,規(guī)則:數(shù)據(jù)在名稱/值對中,數(shù)據(jù)由逗號分隔,大括號保存對象,中括號保存數(shù)組。
4,JSON值:數(shù)字(整數(shù)/浮點(diǎn)數(shù))、字符串(雙引號)、布爾值(true/false)、數(shù)組(中括號)、對象(大括號)、null。
么是 JSON?
JSON (JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。易于人閱讀和編寫。同時也易于機(jī)器解析和生成。
JSON 采用完全獨(dú)立于語言的文本格式,而且很多語言都提供了對 json 的支持(包括 C, C++, C#, Java, JavaScript, Perl, Python 等)。 這樣就使得 JSON 成為理想的數(shù)據(jù)交換格式。
json 是一種輕量級的數(shù)據(jù)交換格式。
輕量級指的是跟 xml 做比較。
數(shù)據(jù)交換指的是客戶端和服務(wù)器之間業(yè)務(wù)數(shù)據(jù)的傳遞格式。
json 是由鍵值對組成,并且由花括號(大括號)包圍。每個鍵由引號引起來,鍵和值之間使用冒號進(jìn)行分隔, 多組鍵值對之間進(jìn)行逗號進(jìn)行分隔。
json 定義示例:
var jsonObj = {
"key1":12,
"key2":"abc",
"key3":true,
"key4":[11,"arr",false],
"key5":{
"key5_1" : 551,
"key5_2" : "key5_2_value"
},
"key6":[{
"key6_1_1":6611,
"key6_1_2":"key6_1_2_value"
},{
"key6_2_1":6621,
"key6_2_2":"key6_2_2_value"
}]
};
json 本身是一個對象。
json 中的 key 我們可以理解為是對象中的一個屬性。
json 中的 key 訪問就跟訪問對象的屬性一樣: json 對象.key
json 訪問示例:
alert(typeof(jsonObj));// object json 就是一個對象
alert(jsonObj.key1); //12
alert(jsonObj.key2); // abc
alert(jsonObj.key3); // true
alert(jsonObj.key4);// 得到數(shù)組 [11,"arr",false]
// json 中 數(shù)組值的遍歷
for(var i = 0; i < jsonObj.key4.length; i++) {
alert(jsonObj.key4[i]);
}
alert(jsonObj.key5.key5_1);//551
alert(jsonObj.key5.key5_2);//key5_2_value
alert( jsonObj.key6 );// 得到 json 數(shù)組
// 取出來每一個元素都是 json 對象
var jsonItem = jsonObj.key6[0];
// alert( jsonItem.key6_1_1 ); //6611
alert( jsonItem.key6_1_2 ); //key6_1_2_value
json 的存在有兩種形式。
一種是:對象的形式存在,我們叫它 json 對象。
一種是:字符串的形式存在,我們叫它 json 字符串。
一般我們要操作 json 中的數(shù)據(jù)的時候,需要 json 對象的格式。
一般我們要在客戶端和服務(wù)器之間進(jìn)行數(shù)據(jù)交換的時候,使用 json 字符串。
JSON.stringify() 把 json 對象轉(zhuǎn)換成為 json 字符串
JSON.parse() 把 json 字符串轉(zhuǎn)換成為 json 對象
示例代碼:
// 把 json 對象轉(zhuǎn)換成為 json 字符串
var jsonObjString = JSON.stringify(jsonObj); // 特別像 Java 中對象的 toString
alert(jsonObjString)
// 把 json 字符串。轉(zhuǎn)換成為 json 對象
var jsonObj2 = JSON.parse(jsonObjString);
alert(jsonObj2.key1);// 12
alert(jsonObj2.key2);// abc
@Test
public void test1(){
Person person = new Person(1," 愷龍!");
// 創(chuàng)建 Gson 對象實(shí)例
Gson gson = new Gson();
// toJson 方法可以把 java 對象轉(zhuǎn)換成為 json 字符串
String personJsonString = gson.toJson(person);
System.out.println(personJsonString);
// fromJson 把 json 字符串轉(zhuǎn)換回 Java 對象
// 第一個參數(shù)是 json 字符串
// 第二個參數(shù)是轉(zhuǎn)換回去的 Java 對象類型
Person person1 = gson.fromJson(personJsonString, Person.class);
System.out.println(person1);
}
@Test
public void test2() {
List<Person> personList = new ArrayList<>();
personList.add(new Person(1, " 張三"));
personList.add(new Person(2, " 李四"));
Gson gson = new Gson();
// 把 List 轉(zhuǎn)換為 json 字符串
String personListJsonString = gson.toJson(personList);
System.out.println(personListJsonString);
List<Person> list = gson.fromJson(personListJsonString, new PersonListType().getType());
System.out.println(list);
Person person = list.get(0);
System.out.println(person);
}
@Test
public void test3(){
Map<Integer,Person> personMap = new HashMap<>();
personMap.put(1, new Person(1, " 張三"));
personMap.put(2, new Person(2, " 李四"));
Gson gson = new Gson();
// 把 map 集合轉(zhuǎn)換成為 json 字符串
String personMapJsonString = gson.toJson(personMap);
System.out.println(personMapJsonString);
// Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString, new
PersonMapType().getType());
Map<Integer,Person> personMap2 = gson.fromJson(personMapJsonString, new
TypeToken<HashMap<Integer,Person>>(){}.getType());
System.out.println(personMap2);
Person p = personMap2.get(1);
System.out.println(p);
}
歡迎關(guān)注公眾號:愚生淺末。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。