亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JSON 基本使用教程

 更新時間:2023年02月03日 14:39:56   作者:兮動人  
JSON是一種輕量級(Light-Meight)、基于文本的(Text-Based)、可讀的(Human-Readable)格式,這篇文章主要介紹了JSON 基本使用教程,需要的朋友可以參考下

1. JSON 是什么?

  • JSON,全稱是 JavaScript Object Notation,即 JavaScript對象標(biāo)記法。
  • JSON是一種輕量級(Light-Meight)、基于文本的(Text-Based)、可讀的(Human-Readable)格式。
  • JSON 的名稱中雖然帶有JavaScript,但這是指其語法規(guī)則是參考JavaScript對象的,而不是指只能用于JavaScript 語言。
  • JSON無論對于人,還是對于機器來說,都是十分便于閱讀和書寫的,而且相比 XML(另一種常見的數(shù)據(jù)交換格式),文件更小,因此迅速成為網(wǎng)絡(luò)上十分流行的交換格式。
  • 近年來JavaScript已經(jīng)成為瀏覽器上事實上的標(biāo)準(zhǔn)語言,JavaScript 的風(fēng)靡,與JSON 的流行也有密切的關(guān)系。
  • 因為JSON本身就是參考JavaScript 對象的規(guī)則定義的,其語法與JavaScript定義對象的語法幾乎完全相同。
  • JSON格式的創(chuàng)始人聲稱此格式永遠(yuǎn)不升級,這就表示這種格式具有長時間的穩(wěn)定性,10 年前寫的文件,10年后也能用,沒有任何兼容性問題。

2. JSON 的語法規(guī)則是怎樣的?

JSON 的語法規(guī)則十分簡單,可稱得上“優(yōu)雅完美”,總結(jié)起來有:

  • 數(shù)組(Array)用方括號(“[]”)表示。
  • 對象(0bject)用大括號(“{}”)表示。
  • 名稱/值對(name/value)組合成數(shù)組和對象。
  • 名稱(name)置于雙引號中,值(value)有字符串、數(shù)值、布爾值、null、對象和數(shù)組。
  • 并列的數(shù)據(jù)之間用逗號(“,”)分隔
{
	"name": "xdr630",
	"favorite": "programming"
}

3. JSON 和 XML

JSON常被拿來與XML做比較,因為JSON 的誕生本來就多多少少要有取代XNL的意思。相比 XML,JSON的優(yōu)勢如下:

  • 沒有結(jié)束標(biāo)簽,長度更短,讀寫更快
  • 能夠直接被JavaScript解釋器解析
  • 可以使用數(shù)組

兩者比較

JSON:

{
	"name":"兮動人",
	"age":22,
	"fruits":["apple","pear","grape"]
}

XML:

<root>
	<name>兮動人</name>
	<age>22</age>
	<fruits>apple</fruits>
	<fruits>pear</fruits>
	<fruits>grape</fruits>
</root>

4. JSON的解析和生成(JSON 和 JS 對象互轉(zhuǎn))

  • 在JavaScript中,有兩個方法與此相關(guān): JSON.parseJSON.stringify 。

JSON 和 JS 對象互轉(zhuǎn)

要實現(xiàn)從JSON字符串轉(zhuǎn)換為JS對象,使用 JSON.parse() 方法:

<script>
	var str = '{"name": "兮動人","age":22}';
	var obj = JSON.parse(str);
	console.log(obj);
</script>

2.要實現(xiàn)從JS對象轉(zhuǎn)換為JSON字符串,使用 JSON.stringify() 方法:

<script>
	var str = '{"name": "兮動人","age":22}';
	var obj = JSON.parse(str);
	console.log(obj);
        
	var jsonstr = JSON.stringify(obj);
	console.log(jsonstr);
</script>

5. JSON格式規(guī)定

1、對象(0bject)

  • 對象用大括號(“{}”)括起來,大括號里是一系列的“名稱/值對”,請看概念圖。

  • 兩個并列的數(shù)據(jù)之間用逗號(“,”)隔開,注意兩點:
  1. 使用英文的逗號(“,”),不要用中文的逗號(“,”)
  2. 最后一個“名稱/值對“之后不要加逗號
  • JSON在線檢查語法:https://www.json.cn/
  • 這里報錯說明JSON中Key/Value不能使用單引號

正確寫法

2、數(shù)組(Array)

數(shù)組表示一系列有序的值,用方括號(“[]”)包圍起來,并列的值之間用逗號分隔,請看概念圖。

例如,以下的數(shù)組是合法的:

[1,2,"three","four",true,false,null,[1,2],{"name":"兮動人"}]

3、名稱/值對(Name/Value)

  • 名稱(Name)是一個字符串,要用雙引號括起來,不能用單引號,也不能沒有引號,這一點與JavaScript不同。
  • 值的類型只有七種:字符串(string)、數(shù)值(number)、對象(object)、數(shù)組(array), true、false、null不能有這之外的類型,例如undefined、函數(shù)等。請看概念圖。

字符串(string)的規(guī)則如下:

  • 英文雙引號括起來,不能用單引號,也不能沒有。
  • 字符串中不能單獨出現(xiàn)雙引號()和右斜杠(“\")。
  • 如果要打雙引號或右斜杠,需要使用“右斜杠+字符”的形式,例如\”\\,其它的轉(zhuǎn)義字符也是如此字符串的概念圖。

轉(zhuǎn)義字符

{
"string":"\\ \" "
}

數(shù)值類型,可以使用科學(xué)計數(shù)法表示

{
"number":1e3,
"n1":1e2,
"n2":-100
}

6. 字符串轉(zhuǎn)化成對象

  • 解析:是指將符合JSON 語法規(guī)則的字符串轉(zhuǎn)換成對象的過程。
  • 不同的編程語言都提供了解析JSON字符串的方法,在這里主要講解JavaScript中的解析方法。主要有三種:

使用eval()

使用JSON.parse()

使用第三方庫,例如JQuery等

1、 eval()

  • eval()函數(shù)的參數(shù)是一個字符串,其作用是直接執(zhí)行其中的 JavaScript代碼。
  • 案例:eval()解析字符串
<script>
	var str = "console.log('hello')";
	eval(str);
</script>

eval 解析字符串的結(jié)果:

  • eval()能夠解析JSON字符串。從這里也可以看得出,JSON 和JavaScript是高度嵌合的。
  • 案例:eval()解析JSON字符串
<script>
	var str = '{"name":"兮動人","age":22}';
	var obj = eval("("+str+")");
	console.log(obj)
</script>

  • 但是,現(xiàn)在已經(jīng)很少直接使用eval()來解析了,如果您的瀏覽器版本真的是很舊,可能才需要這個方法。
  • 此外,eval()是一個相對危險的函數(shù),因為字符串中可能含有未知因素。在這里,作為學(xué)習(xí),還是要知道這也是一種方法。
  • 請注意 eval()的參數(shù),在字符串兩旁加了括號,這是必須的,否則會報錯。因為JSON字符串是被大括號(“{}”)包圍的,直接放到 eval()會被當(dāng)成語句塊來執(zhí)行,因此要在兩旁加上括號,使其變成表達(dá)式。

2、JSON. parse()

  • 現(xiàn)在絕大多數(shù)瀏覽器都以支持JSON.parse(),是推薦使用的方式
  • 如果輸入了不符合規(guī)范的字符串,會報錯。

案例:JSON字符串轉(zhuǎn)換為JS對象

<script>
	var str = '{"name":"兮動人","age":22}';
	var obj = JSON.parse(str)
	console.log(obj)
</script>

  • JSON.parse()可以有第二個參數(shù),是一個函數(shù)。此函數(shù)有兩個參數(shù):name和value,分別代表名稱和值。當(dāng)傳入一個JSON字符串后,JSON的每一組名稱/值對都要調(diào)用此函數(shù)。該函數(shù)有返回值,返回值將賦值給當(dāng)前的名稱(name)。
  • 利用第二個參數(shù),可以在解析JSON字符串的同時對數(shù)據(jù)進行一些處理。

案例:

<script>
	var str = '{"name":"兮動人","age":22}';
	var obj = JSON.parse(str,fun);
	function fun(name,value){
		console.log(name+":"+value);
		return value
	}
	console.log(obj)
</script>

可以做判斷處理,當(dāng)JSON字符串的 name=age 時,設(shè)置age的value=14

<script>
	var str = '{"name":"兮動人","age":22}';
	var obj = JSON.parse(str,fun);
	function fun(name,value){
	if (name == "age")
		value = 14;
		return value
	}
 	console.log(obj)
</script>

7. JS對象轉(zhuǎn)化為字符串

  • 序列化,指將 JavaScript 值轉(zhuǎn)化為JSON字符串的過程。
  • JSON.stringify()能夠?qū)avaScript值轉(zhuǎn)換成JSON字符串。JSON.stringify()生成的字符串可以用JSON.parse()再還原成JavaScript值。

1、參數(shù)的含義

JSON.stringify(value[, replacer[, space]])
  • value:必選參數(shù)。被變換的JavaScript值,一般是對象或數(shù)組。
  • replace:可以省略。有兩種選擇:函數(shù)或數(shù)組。 如果是函數(shù),則每一組名稱/值對都會調(diào)用此函數(shù),該函數(shù)返回一個值,作為名稱的值變換到結(jié)果字符串中,如果返回undefined,則該成員被忽略。

案例:

<script>
        var obj = {
            name: "兮動人",
            age: 22
        };
        console.log(obj);

        var jsonstr = JSON.stringify(obj,fun);

        function fun(name,value) {
            if (name=="age")
                value = 18;
                return value;
         }

        console.log(jsonstr)

</script>

  • 如果是數(shù)組,則只有數(shù)組中存在名稱才能夠被轉(zhuǎn)換,且轉(zhuǎn)換后順序與數(shù)組中的值保持一致。
  • 案例:
<script>
        var obj = {
            a: 1,
            b: 2,
            c: 3,
            d: 4
        };
        console.log(obj);

        var jsonstr = JSON.stringify(obj,["a","b","c"]);
        
        console.log(jsonstr)
</script>

把順序改下,對應(yīng)轉(zhuǎn)換的JSON字符串的數(shù)值不變

var jsonstr = JSON.stringify(obj,["c","a","b"]);

3.space:可以省略。這是為了排版、方便閱讀而存在的。可以在JSON字符串中添加空白或制表符等。

2、value的用法

<script>
var obj = {
            name: "兮動人",
            age: 22
        }
	console.log(obj);
	var jsonstr = JSON.stringify(obj);
	console.log(jsonstr)
</script>

  • 當(dāng)有不符合JSON語法規(guī)則時,就不會被轉(zhuǎn)換成JSON字符串。
  • 數(shù)組中有函數(shù)時會被轉(zhuǎn)換成 null
<script>
	var obj = {
            name: "兮動人",
            age: 22,
            a: undefined,
            f: function () {

            },
            b:[function () {}]
        }
	console.log(obj);
	var jsonstr = JSON.stringify(obj);
	console.log(jsonstr)        
</script>

3、replace的用法

4、space的用法

案例:在上面的基礎(chǔ)上添加

<script>
        var obj = {
            a: 1,
            b: 2,
            c: 3,
            d: 4
        };
        console.log(obj);

        var jsonstr = JSON.stringify(obj,["c","a","b"],"one");

        console.log(jsonstr)
</script>

改成制表符:\t

<script>
        var obj = {
            a: 1,
            b: 2,
            c: 3,
            d: 4
        };
        console.log(obj);

        var jsonstr = JSON.stringify(obj,["c","a","b"],"\t");

        console.log(jsonstr)
</script>

到此這篇關(guān)于JSON 基本使用教程的文章就介紹到這了,更多相關(guān)JSON 基本使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ng-options和ng-checked在表單中的高級運用(推薦)

    ng-options和ng-checked在表單中的高級運用(推薦)

    AngularJS是當(dāng)前非常的流行的前端框架,它的語法糖非常多,也極大的方便了前端開發(fā)者。這篇文章主要介紹了ng-options和ng-checked在表單中的高級運用,需要的朋友可以參考下
    2017-01-01
  • uniapp開發(fā)小程序?qū)崿F(xiàn)全局懸浮按鈕的代碼

    uniapp開發(fā)小程序?qū)崿F(xiàn)全局懸浮按鈕的代碼

    這篇文章主要介紹了uniapp開發(fā)小程序如何實現(xiàn)全局懸浮按鈕,但是在uniapp中式?jīng)]有window對象,和dom元素的,需要獲取頁面上節(jié)點的幾何信息,具體實例代碼詳細(xì)跟隨小編一起看看吧
    2022-03-03
  • Bootstrap 源代碼分析(未完待續(xù))

    Bootstrap 源代碼分析(未完待續(xù))

    這篇文章主要為大家詳細(xì)分析了Bootstrap部分源代碼,先提供給大家學(xué)習(xí),感興趣的小伙伴們可以參考一下
    2016-08-08
  • bootstrap 表單驗證使用方法

    bootstrap 表單驗證使用方法

    在web開發(fā)過程中表單驗證是比較常見的需求,友好的錯誤提示能夠用戶帶來極好的用戶體驗效果,今天小編給大家?guī)砣绾问褂胋ootstrap 表單驗證功能,一起看看吧
    2017-01-01
  • JS實現(xiàn)按鈕顏色切換效果

    JS實現(xiàn)按鈕顏色切換效果

    這篇文章主要為大家詳細(xì)介紹了JS實現(xiàn)按鈕顏色切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • uni-app如何讀取本地json數(shù)據(jù)文件并渲染到頁面上

    uni-app如何讀取本地json數(shù)據(jù)文件并渲染到頁面上

    在做前端開發(fā)的時候,少不了要用一些模擬的json的數(shù)據(jù)來進行測試,這篇文章主要給大家介紹了關(guān)于uni-app如何讀取本地json數(shù)據(jù)文件并渲染到頁面上的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • JavaScript語法約定和程序調(diào)試原理解析

    JavaScript語法約定和程序調(diào)試原理解析

    這篇文章主要介紹了JavaScript語法約定和程序調(diào)試原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • PHP 實現(xiàn)一種多文件上傳的方法

    PHP 實現(xiàn)一種多文件上傳的方法

    之前做項目的時候在實現(xiàn)表單中file類型input選擇多圖片時有很多種實現(xiàn)方法,今天小編給大家分享基于php實現(xiàn)一種多文件上傳的方法,需要的朋友參考下吧
    2017-09-09
  • javascript游戲開發(fā)之《三國志曹操傳》零部件開發(fā)(五)可移動地圖的實現(xiàn)

    javascript游戲開發(fā)之《三國志曹操傳》零部件開發(fā)(五)可移動地圖的實現(xiàn)

    首先來說,我對游戲開發(fā)可以算是不怎么深入,因為現(xiàn)在的程序員愛用canvas,我卻就只會拿幾個div湊和。不過沒關(guān)系,因為做出來的同樣是游戲。哈!廢話最近有點多,感興趣的朋友可以了解下
    2013-01-01
  • 微信小程序?qū)崿F(xiàn)一鍵登錄

    微信小程序?qū)崿F(xiàn)一鍵登錄

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)一鍵登錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07

最新評論