1. 程式人生 > >為您解惑:JSON的eval()和parse()方法以及stringfy()方法

為您解惑:JSON的eval()和parse()方法以及stringfy()方法

JSON 最常見的用法之一,是從 web 伺服器上讀取 JSON 資料(作為檔案或作為 HttpRequest),將 JSON 資料轉換為 JavaScript 物件,然後在網頁中使用該資料。

為了更簡單地講解,下面使用字串作為輸入進行演示(而不是檔案)。

(1)把 JSON 文字轉換為 JavaScript 物件

a. 由於 JSON 語法是 JavaScript 語法的子集,JavaScript 函式 eval() 可用於將 JSON 文字轉換為 JavaScript 物件。

語法:var obj = eval ("(" + jsonTxt + ")");  其中jsonTxt是JSON文字。

例項如下:

<span style="font-size:18px;">var jsonTxt = '{"name":"leinov","sex":"famle","address":"beijing"}'
var jsonObj = eval("("+jsonTxt+")");
alert(typeof jsonObj); //Object</span>
b.JSON.parse();
作用:將JavaScript物件表示法的JSON字串轉換為物件(字串轉物件)
語法:JSON.parse(text [, reviver])
text 必選。 一個有效的 JSON 字串。
reviver 可選。 一個轉換結果的函式。 將為物件的每個成員呼叫此函式。
返回值:JSON物件

例項如下:
<span style="font-size:18px;">var jsonTxt = '{"name":"leinov","sex":"famle","address":"beijing"}'
var jsonObj = JSON.parse(jsonTxt);
alert(typeof jsonObj); //Object</span>

(2)把 JSON 物件轉換為JSON字串
JSON.stringify()
作用:將 JavaScript json物件轉換為JavaScript物件表示法的JSON字串(物件轉為字串)
語法:JSON.stringify(value [, replacer] [, space]);
value 必選 通常為物件或陣列
replacer 可選轉換結果的函式或陣列
space 可選。 新增縮排、空白和換行符來返回值 JSON 文字更便於閱讀。
         如果省略 space,返回值文字生成,沒有任何額外的空白。
         如果 space 是數字,則返回值具有空白的文字縮排指定數目在每個級別的。 如果 space 大於10 時,文字縮排 10 個空白。
         如果 space 為非空字串,如“\t”,返回值文字縮排與字串的字元在每個級別。
         如果 space 為大於 10 個字元的字串,使用前 10 個字元。
返回值:JSON 包含的文字字串。
例項:
var student = new Object();
student.name = "leinov";
student.sex = "famle";
student.address = "chaoyang";
var jsonStudent = JSON.stringify(student);
alert(typeof jsonStudent); //string

注:部分借鑑 https://technet.microsoft.com/zh-cn/sysinternals/cc836466(v=vs.85)