App下載
話題 首頁 > JSON 教程 > JSON 教程話題列表 > 詳情

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

精華
徐建凱 2016-10-21 04:01:19 瀏覽(3539) 回復(fù)(4) 贊(0)
json字符串,json數(shù)據(jù),對象的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對象字面量
var obj = { name: "Zhang", age:3, course: { name: "HTML5" } };

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

json 是一種跨語言的約定俗稱的數(shù)據(jù)格式,與 js 對象的差別看起來只是屬性加了引號而已,使用時可以當(dāng)做 js 對象來使用,甚至類型測試和原型樹都與 Object 有扯不開的聯(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

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

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

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

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

以上是個人理解,至于你信不信……

一筆荒蕪 2018-05-31

剛學(xué)習(xí)程序,過來學(xué)習(xí)學(xué)習(xí)!!!!...

1144100656 2018-05-31

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

1152696398 2018-05-31

好慢呀,空空如也,半天不來大神解決,大佬在哪啦

要回復(fù),請先登錄 或者注冊