1. 程式人生 > >JSON與JS物件的區別

JSON與JS物件的區別

和一些同學一樣:總是感覺json物件(其實json不是物件)和js物件的字面量表示法相同,最近學習json,真心搞不懂,js物件和json有什麼區別?就是感覺json的key要用” “括起來,但是js物件的字面量表示法不需要。 
   
比如:

//js物件的字面量表示法: 
var people1={ 
    name:'hehe', 
    age:18 
}; 
//json的格式是: 
var people1={ 
    "name":'hehe', 
    "age":18 
}; 

      二者相同的地方是,看起來都是資料,而且恰巧又都是文字;不同的地方在於,JS字面量的文字是被指令碼引擎直接解析的,而JSON的文字,如果要轉化為JS物件的話,是交給eval函式來處理的,那麼,如何理解JSON的文字,就取決於這個函式,而不是指令碼引擎,因為這2者的處理根本就不在一個層面上。 
  一直以為JSON是物件,然而在閱讀js高程中出現了一些不理解的地方,網上查閱才發現JSON與JS有很大的不同。 
  var obj={width:100,height:200},這樣的並不叫JSON,並且JSON只是一種資料格式,並不是具體的例項物件。但很多人把這樣的JS物件當成JSON。 
  JSON(JavaScript Object Notation)是一種輕量級的資料交換格式,JSON格式的資料,主要是為了跨平臺交流資料用的。 
  但JSON和JavaScript確實存在淵源,可以說這種資料格式是從JavaScript物件中演變出來的,它是JavaScript的一個子集。JSON本身的意思就是JavaScript物件表示法(JavaScript Object Notation),它用嚴格的JavaScript物件表示法來表示結構化的資料。 
  它是一種嚴格的js物件的格式,JSON的屬性名必須有雙引號,如果值是字串,也必須是雙引號; 
  JSON只是一種資料格式(或者叫資料形式),資料格式其實就是一種規範,格式、形式、規範是不能用來存諸資料的。我們不能把以下的物件叫JSON,比如: 
  

<script>
var obj2={};//這只是JS物件
var obj3={width:100,height:200};/*這跟JSON就更不沾邊了,只是JS的物件 */
var obj4={'width':100,'height':200};/*這跟JSON就更不沾邊了,只是JS的物件 */
var obj5={"width":100,"height":200,"name":"rose"}; /*我們可以把這個稱做:JSON格式的JavaScript物件 */
var str1='{"width":100,"height":200,"name":"rose"}';/*我們可以把這個稱做:JSON格式的字串 */

var a=[
         {"width":100,"height":200,"name":"rose"},
         {"width":100,"height":200,"name":"rose"},
         {"width":100,"height":200,"name":"rose"},
        ];
        /*這個叫JSON格式的陣列,是JSON的稍複雜一點的形式 */
var str2='['+
         '{"width":100,"height":200,"name":"rose"},'+
         '{"width":100,"height":200,"name":"rose"},'+
         '{"width":100,"height":200,"name":"rose"},'+
        ']' ;
        /*  這個叫稍複雜一點的JSON格式的字串  */ 
</script>


原文:https://blog.csdn.net/yeoman92/article/details/54924930