JSON.stringify()

JSON 的常規用途是同 web 服務器進行數據交換。

在向 web 服務器發送數據時,數據必須是字符串。

通過 JSON.stringify() 把 JavaScript 對象轉換為字符串。

對 JavaScript 對象進行字符串化

想象一下我們在 JavaScript 中有這個對象:

var obj = { name:"Bill Gates", age:62, city:"Seattle"};

請使用 JavaScript 函數 JSON.stringify() 將它轉換為字符串。

var myJSON = JSON.stringify(obj);

結果將是遵守 JSON 標記法的一段字符串。

myJSON 目前是一段字符串,并準備好送往服務器:

實例

var obj = { name:"Bill Gates", age:62, city:"Seattle"};
var myJSON =  JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;

親自試一試

您將在下一章學到如何向服務器發送 JSON。

Stringify JavaScript 數組

也可以對 JavaScript 數組進行字符串化:

想象一下我們在 JavaScript中有這個數組:

var arr = [ "Bill Gates", "Steve Jobs", "Elon Musk" ];

請使用 JavaScript 函數 JSON.stringify() 將其轉換為字符串。

var myJSON = JSON.stringify(arr);

結果將是遵守 JSON 標記法的字符串。

myJSON 目前是一段字符串,并準備好送往服務器:

實例

var arr = [ "Bill Gates", "Steve Jobs", "Elon Musk" ];
var myJSON =  JSON.stringify(arr);
document.getElementById("demo").innerHTML = myJSON;

親自試一試

您將在下一章學到如何向服務器發送 JSON。

例外

日期字符串化

在 JSON 中,不允許日期對象。JSON.stringify() 函數將把任何日期轉換為字符串。

實例

var obj =  { "name":"Bill Gates", "today":new Date(), "city":"Seattle"};
var myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;

親自試一試

您可以在接收端把字符串轉換回日期對象。

函數字符串化

在 JSON 中,不允許函數作為對象值。

JSON.stringify() 函數將從 JavaScript 對象刪除任何函數,包括鍵和值:

實例

var obj =  { "name":"Bill Gates", "age":function () {return 62;}, "city":"Seattle"};
var myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;

親自試一試

如果您在運行 JSON.stringify() 函數前已將函數轉換為字符串,這個環節可以省略。

實例

var obj =  { "name":"Bill Gates", "age":function () {return 62;}, "city":"Seattle"};
obj.age = obj.age.toString();
var myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;

親自試一試

您應該避免在 JSON 中使用函數,函數會失去其作用域,而且您還需要使用 eval() 將它們轉換回函數。

瀏覽器支持

所有主流瀏覽器和最新的 ECMAScript (JavaScript) 標準都包含 JSON.stringify() 函數:

下表中的數字指定了完全支持 JSON.stringify() 函數的首個瀏覽器版本:

Yes 8.0 3.5 4.0 10.0