1. 程式人生 > >jquery 的JSON.parse JSON.stringify 和parseJSON 方法的區別使用

jquery 的JSON.parse JSON.stringify 和parseJSON 方法的區別使用

控制字符 OS ava imm head span 轉義 dep itl

1.JSON.parse(str) 用於從一個字符串中解析出json對象,如

var str = ‘{"name":"huangxiaojian","age":"23"}‘

結果:

JSON.parse(str)

Object
  1. age: "23"
  2. name: "huangxiaojian"
  3. __proto__: Object

註意:單引號寫在{}外,每個屬性名都必須用雙引號,否則會拋出異常。

2.JSON.stringify(a) 用於從一個對象解析出字符串,如

var a = {a:1,b:2}

結果:

JSON.stringify(a)

"{"a":1,"b":2}"

3.
jQuery.parseJSON()函數用於將格式完好的JSON字符串轉為與之對應的JavaScript對象

所謂"格式完好",就是要求指定的字符串必須符合嚴格的JSON格式,例如:屬性名稱必須加雙引號、字符串值也必須用雙引號。

a:如果傳入一個格式不"完好"的JSON字符串將拋出一個JS異常,例如:以下字符串均符合JSON格式,但它們不是格式完好的JSON字符串(因此會拋出異常):

// 以下均是字符串值,省略了兩側的引號,以便於展現內容

{id: 1} // id是屬性名稱,必須加雙引號
{‘id‘: 1} // id是屬性名稱,必須用雙引號(不能用單引號)
{"name": ‘CodePlayer‘} // name屬性的值是字符串,必須用雙引號(不能用單引號)

b:JSON標準不允許字符串中出現"控制字符",例如:一個Tab或換行符。

$.parseJSON(‘{"name": "Code\tPlayer\n"}‘); // 多數情況下,它會拋出一個錯誤,因為JS解析器會將字符串中的\t或\n等轉義直接視作字面值,起到Tab或換行的效果。

//正確寫法應該如下(使用兩個反斜杠,以免被JS解析器直接轉義\t或\n):
$.parseJSON(‘{"name": "Code\\tPlayer\\n"}‘);

jquery 的JSON.parse JSON.stringify 和parseJSON 方法的區別使用