初入JSON,JSON的入門
JSON的一些基本概念
JSON不是一門編程語言,它更應該被理解為一種數(shù)據(jù)格式,JSON也不屬于JavaScript,也不是只能在JavaScript中使用,它是一種通用的數(shù)據(jù)格式,很多語言都有解析和序列化JSON的內置能力。
本文基于JavaScript來介紹JSON的一些基本知識。
JSON語法
JSON語法支持3種類型的值
簡單值:字符串、數(shù)值、布爾值和null可以在JSON中出現(xiàn)。特殊地,undefined不可以。
對象:一種復雜數(shù)據(jù)類型,對象表示有序鍵/值對。每個值可以是簡單值,也可以是復雜類型。
數(shù)組:一種復雜數(shù)據(jù)類型,數(shù)組表示可以通過數(shù)值索引訪問值的有序列表。數(shù)組的值可以是任意類型,包括簡單值、對象、甚至其他數(shù)組。
簡單值
例如:下面這個數(shù)值是有效的JSON:
3
下面這個字符串也是有效的JSON:
“hellow JSON!”
JOSN中的字符串必須使用雙引號,單引號則會導致語法錯誤。
對象
在JSON中,對象與JavaScript中的表示有一些不同,下面是JSON中對象的一個例子:
{
"name": "name",
"age": 19
}
對象由一對大括號包圍。首先,JSON中的對象沒有變量聲明(JSON中沒有變量),其次,最后沒有分號(不需要)。同時,屬性名需要用雙引號包圍起來,不同的屬性用逗號分隔,且最后一個屬性后不能有逗號。屬性的值還可以是復雜數(shù)據(jù)類型,例如:
{
"name": "name",
"age": 19
"school": {
"name: "name",
"type": "university"
}
}
上述例子中在頂級對象中又嵌入了一個對象,即使整個JSON中有兩個屬性都叫name
,但它們屬于兩個不同的對象,因此是允許的,但是同一個對象中不能出現(xiàn)兩個相同的屬性。
數(shù)組
數(shù)組同樣是一種復雜的數(shù)據(jù)類型,由一對中括號包圍,和對象有一定類似性,每一個元素需要用逗號隔開,最后一個元素后不能有空格,如下:
[
25,
"hi",
true,
{
"name": "name",
"age": 19
}
]
對象和數(shù)組通常會作為JSON的頂級結構(盡管不是必須的),以便創(chuàng)建大型復雜數(shù)據(jù)結構。
JSON對象
JSON對象是JavaScript中的全局對象。它有兩個方法stringify()
和parse()
.在簡單的情況下,這兩個方法分別可以將JavaScript序列化為JSON字符串,以及將JSON解析為原生JavaScript值。
JSON.stringify()
stringify()
方法接收一個JavaScript對象轉化為一個JSON字符串:
let book = {
title: "JavaScript高級程序設計",
year: 2020
};
let jsonText = JSON.stringify(book);
console.log(jsonText);
//輸出
//{"title":"JavaScript高級程序設計","year":2020}
如果某個對象中有自定義的toJSON方法,那么stringify()
方法就會優(yōu)先調用toJSON方法:
let obj = {
? ?name: "name",
? ?age: 19,
? ?toJSON: function() {
? ? ? ?return this.name;
? ?}
}
let jsonText = JSON.stringify(obj);
console.log(jsonText);
//結果: "name"
這個方法還有第二個參數(shù),在此暫不作深入。
JSON.parse()
parse()
方法接收一個JSON字符串,解析成一個JavaScript對象:
let jsonText = '{"title":"JavaScript高級程序設計","year":2020}'
let book = JSON.parse(book);
console.log(book);
//結果
//book對象
來源:CSDN
作者:im_pcy
原文:初入JSON,JSON的入門_moreerom的博客-CSDN博客
了解相關知識可以點擊: