1. 程式人生 > >JSON語法和JavaScript語法分別

JSON語法和JavaScript語法分別

JSON是獨立於語言存在的,在不同的程式語言中對這種資料型別的實現不同,例如在JavaScript中使用JavaScript物件對這種資料格式進行實現,那麼在java中當然是用java物件實現。
描述JSON格式資料的語法採用了JS物件字面量的表示方法,所以描述JSON的語法是js物件字面量表示法語法的一個真子集。
image.png
1、js物件的字面量表示法與JSON語法的區別(後者是前者的真子集):

<script type="text/javascript">
    // JSON語法中,名稱(name)必須要用""(雙引號)包裹起來。
    // 這是一個js物件,屬性不加"",符合js物件的字面量表示法語法但不符合JSON語法。
 var jsObj1 = {
 name : "前端攻城小牛"
 }
 
    // JSON語法中,值(value)可以是6種資料型別,並且這6種資料型別可以互相巢狀 
    // 值(value)可以是雙引號括起來的字串(string)、數值(number)、Boolean、 null、物件(object)或者陣列(array)。
    // 這是一個內部帶有方法js物件,雖然屬性加了"",但JSON的語法中屬性的值不能是方法。
 var jsObj2 = {
 "name" : "前端攻城小牛",
 "func" : function(){
 alert("hello");
 }
 }
    // 這是一個符合JSON資料格式的js物件,是JavaScript語言中對JSON這種資料格式的實現形式,也是我們常說的"JSON物件"。
    // 這種JS物件字面量的表示方法,也就是"JSON對於其資料形式規範的語法",所以說"JSON的語法就是JS物件字面量表示法語法的一個子集"。
 var jsonObj = {
 "name" : "前端攻城小牛",
 "age" : 25,
       "remark" :{ "high" : 170 ,"address" : "beijinghaidian" }
 }
</script>

//有什麼不懂歡迎加全棧開發交流群:864305860

我們知道,js對於變數的命名規則是數字、字母、下劃線及$符號,屬性不加引號時也符合這個規則,但要是屬性中有這四種之外其它的符號如"[" 或者 "."等等,屬性就必須引號來表示。
示例中的三個變數都是js物件,只是前兩種不符合JSON語法。
 2、js字串的字面量表示法與JSON語法的區別(後者是前者的真子集):

// 下面是js中符合JSON格式的字串
// js字串用""(雙引號)括起來
// 其他的""(雙引號)全部使用"\"(反斜槓)轉義
var JSONStr1 = "{\"name\" : \"前端攻城小牛\"}";
// 下面的字串不符合JSON格式,它只是一個js字串
// 名稱(name)沒有使用""(雙引號)括起來
var JSONStr2 = "{'name' : '前端攻城小牛'}";

JSON語法對字串的定義:是由雙引號包圍的任意數量Unicode字元的集合,使用反斜線轉義。一個字元(character)即一個單獨的字串(character string)。
JSON獨立於語言而存在,任何站在語言的角度及物件層面對他的解釋都是有侷限性或者是錯誤的。