App下載
話題 首頁(yè) > JSON 教程 > JSON 教程話題列表 > 詳情

json字符串,json數(shù)據(jù),對(duì)象的json表示法它們有什么關(guān)系嗎?如何互相轉(zhuǎn)換?

精華
徐建凱 2016-10-21 04:01:19 瀏覽(3171) 回復(fù)(4) 贊(0)
json字符串,json數(shù)據(jù),對(duì)象的json表示法它們有什么關(guān)系嗎?如何互相轉(zhuǎn)換? ``` var me = { "name":"Zhang", "age":3, "course":{ "name":"HTML5" } }```
json

回答(4)

初一扛把子 2016-10-21
// json字符串
var jsonStr = '{ "name":"Zhang", "age":3, "course": { "name": "HTML5" } }';


// json數(shù)據(jù)
{ "name":"Zhang", "age":3, "course": { "name": "HTML5" } }


// js對(duì)象字面量
var obj = { name: "Zhang", age:3, course: { name: "HTML5" } };

json 字符串就是一個(gè)字符串,String 類型,與其他兩者就是數(shù)據(jù)類型的差別,就像字符串 "1" 和數(shù)值 1 一樣。

json 是一種跨語(yǔ)言的約定俗稱的數(shù)據(jù)格式,與 js 對(duì)象的差別看起來(lái)只是屬性加了引號(hào)而已,使用時(shí)可以當(dāng)做 js 對(duì)象來(lái)使用,甚至類型測(cè)試和原型樹(shù)都與 Object 有扯不開(kāi)的聯(lián)系。

var json = {"a" : 1};
console.log(typeof json)             // object
console.log(json instanceof Object)  // true
console.log([].toString.call(json))  // [object Object]
console.log(json.constructor)        // function Object() { }
console.log(json.__proto__ == Object.prototype)    // true

即使這樣,也不能說(shuō) json 就是 js 對(duì)象,確切的說(shuō) js 對(duì)象是 json 在 js 語(yǔ)言中的載體。 作為一種跨語(yǔ)言的數(shù)據(jù)格式,它不能像 js 對(duì)象一樣添加一個(gè)函數(shù)作為屬性,值不能為 NaN 或 undefined。所能傳遞的都是各種語(yǔ)言易解析的數(shù)據(jù)類型。

json 本身只是一種數(shù)據(jù)格式,要想在 js 中使用,就需要依賴語(yǔ)言提供解釋器。也就是說(shuō),是 js 的 json 解釋器把 json 數(shù)據(jù)轉(zhuǎn)換成了 js 中易使用的 object 類型。

上面已經(jīng)提到了, js 對(duì)象是 json 在 js 語(yǔ)言中的載體,所以在 js 對(duì)象沒(méi)有函數(shù)屬性與非法值的時(shí)候,無(wú)需計(jì)較它到底是什么。 以下是兩者相互轉(zhuǎn)換的方法:

// 字符串轉(zhuǎn) json 
var json = JSON.parse('{ "a": 1}');
// 對(duì)象轉(zhuǎn)字符串
var jsonStr = JSON.stringify({ b: 2 });

以上是個(gè)人理解,至于你信不信……

一筆荒蕪 2018-05-31

剛學(xué)習(xí)程序,過(guò)來(lái)學(xué)習(xí)學(xué)習(xí)!!!!...

1144100656 2018-05-31

這個(gè)領(lǐng)域不太懂!! 還是坐等大佬吧...

1152696398 2018-05-31

好慢呀,空空如也,半天不來(lái)大神解決,大佬在哪啦

要回復(fù),請(qǐng)先登錄 或者注冊(cè)