JSON.stringify 函數 (JavaScript)講解

soゝso 2016-08-22 18:34:55 12795

將 JavaScript 值轉換為 JavaScript 對象表示法 (Json) 字符串。


語法

JSON.stringify(value [, replacer] [, space])

參數

 value:必需。 要轉換的 JavaScript 值(通常為對象或數組)。
 replacer:可選。 用于轉換結果的函數或數組。

 如果 replacer 為函數,則 JSON.stringify 將調用該函數,并傳入每個成員的鍵和值。 使用返回值而不是原始值。 如果此函數返回 undefined,則排除成員。 根對象的鍵是一個空字符串:""。

 如果 replacer 是一個數組,則僅轉換該數組中具有鍵值的成員。 成員的轉換順序與鍵在數組中的順序一樣。 當 value 參數也為數組時,將忽略 replacer 數組。

 space:可選。 向返回值 JSON 文本添加縮進、空格和換行符以使其更易于讀取。

如果省略 space,則將生成返回值文本,而沒有任何額外空格。

如果 space 是一個數字,則返回值文本在每個級別縮進指定數目的空格。 如果 space 大于 10,則文本縮進 10 個空格。

如果 space 是一個非空字符串(例如“\t”),則返回值文本在每個級別中縮進字符串中的字符。

如果 space 是長度大于 10 個字符的字符串,則使用前 10 個字符。


返回值:

一個包含 JSON 文本的字符串。

異常:

Exception Condition。

  1. 替換器參數無效 replacer 參數不是函數或數組。
  2. 值參數中不支持循環引用 value 參數包含循環引用。

如果 value 具有 toJSON 方法,則 JSON.stringify 函數將使用該方法的返回值。 如果 toJSON 方法的返回值為 undefined,則不轉換成員。 這使對象能夠確定自己的 JSON 表示形式。

將不會轉換不具有 JSON 表示形式的值,例如 undefined。 在對象中,將丟棄這些值。 在數組中,會將這些值替換為 null。

字符串值以引號開始和結束。 所有 Unicode 字符可括在引號中,但必須使用反斜杠進行轉義的字符除外。 以下字符的前面必須是反斜杠:

  • 引號 (")
  • 反斜杠 (\)
  • 退格鍵 (b)
  • 換頁符 (f)
  • 換行符 (n)
  • 回車符 (r)
  • 水平制表符 (t)
  • 四個十六進制數字 (uhhhh)

執行順序:

在序列化過程中,如果 value 參數對應有 toJSON 方法,則 JSON.stringify 將首先調用 toJSON 方法。 如果該方法不存在,則使用原始值。 接下來,如果提供 replacer 參數,則該值(原始值或 toJSON 返回值)將替換為 replacer 參數的返回值。 最后,根據可選 space 參數向該值添加空格以生成最終的 JSON 文本。

此示例使用JSON.stringifycontact 對象轉換為 JSON 文本。定義 memberfilter 數組以便只轉換 surnamephone 成員。省略 firstname成員。

var contact = new Object();
contact.firstname = "Jesper";
contact.surname = "Aaberg";
contact.phone = ["555-0100", "555-0120"];

var memberfilter = new Array();
memberfilter[0] = "surname";
memberfilter[1] = "phone";
var jsonText = JSON.stringify(contact, memberfilter, "\t");
document.write(jsonText);
// Output:
// { "surname": "Aaberg", "phone": [ "555-0100", "555-0120" ] }

此示例將 JSON.stringify 與一個數組一起使用。

replaceToUpper函數將數組中的每個字符串轉換為大寫形式。

var continents = new Array();
continents[0] = "Europe";
continents[1] = "Asia";
continents[2] = "Australia";
continents[3] = "Antarctica";
continents[4] = "North America";
continents[5] = "South America";
continents[6] = "Africa";

var jsonText = JSON.stringify(continents, replaceToUpper);

function replaceToUpper(key, value) {
    return value.toString().toUpperCase();
}

//Output:
// "EUROPE,ASIA,AUSTRALIA,ANTARCTICA,NORTH AMERICA,SOUTH AMERICA,AFRICA"

此示例使用 toJSON 方法將字符串值轉換為大寫形式。

var contact = new Object();
contact.firstname = "Jesper";
contact.surname = "Aaberg";
contact.phone = ["555-0100", "555-0120"];

contact.toJSON = function(key)
 {
    var replacement = new Object();
    for (var val in this)
    {
        if (typeof (this[val]) === 'string')
            replacement[val] = this[val].toUpperCase();
        else
            replacement[val] = this[val]
    }
    return replacement;
};

var jsonText = JSON.stringify(contact);
document.write(jsonText);

// Output:
{"firstname":"JESPER","surname":"AABERG","phone":["555-0100","555-0120"]}

'{"firstname":"JESPER","surname":"AABERG","phone":["555-0100","555-0120"]}'

PS:在以上文檔模式中受到支持:Internet Explorer 8 標準模式、Internet Explorer 9 標準模式、Internet Explorer 10 標準模式、Internet Explorer 11 標準模式。此外,也在應用商店應用(Windows 8 和 Windows Phone 8.1)中受支持。

版權所屬:SO JSON在線解析

原文地址:http://www.380127.tw/blog/25.html

轉載時必須以鏈接形式注明原始出處及本聲明。

本文主題:

如果本文對你有幫助,那么請你贊助我,讓我更有激情的寫下去,幫助更多的人。

關于作者
一個低調而悶騷的男人。
相關文章
JS解密,JavaScript 解密,任何JS加密都能100%解密,以及JS 加密講解
Javascript 加密/壓縮后運行不了,JavaScript報錯排查講解
分解質因數 JavaScript 計算方式,及分解質因數講解
Javascript不可逆加密,JS加密工具sojson.v5 版本更新說明
JS加密V6版本上線了,JS加密升級,原來的sojson.v5加密升級到JS加密第六個版本?。?!
JavaScript function 類型的使用說明
怎么合理管理、提高Javascript的性能
json 解析與生成工具類 ,JSON操作講解(附件)
JSON格式講解,JSON獲取對象,JSONObject和JSONArray的操作
JS加密,JS在線混淆加密,JavaScript在線加密
最新文章
QUIC / HTTP3 協議詳細分析講解 837
恭喜那個做云存儲的七牛云完成 F 輪 10 億人民幣的融資,開啟新的云旅程 1501
Autojs怎么安全加密?Autojs在線加密工具注意事項。 2489
Java JSON 組件選型之 FastJson 為什么總有漏洞? 6986
使用七牛云存儲實現圖片API,自動刪除圖片方案合集 2357
神速ICP備案經驗分享,ICP備案居然一天就通過了 3593
百度加強推送URL鏈接,百度SEO強行推送鏈接JavaScript代碼案例講解。 3779
SOJSON 拓展服務器被DDos攻擊了一晚上,是如何解決的? 4592
湖南地區備案“新增網站需提交組網方案或解釋說明”,關于備案做簡單敘述 4699
企查查你是個什么企業,騙子的幫兇,詐騙的集中營,通過企查查騷擾企業電話不斷,為所欲為的企查查 11555
最熱文章
蘋果電腦Mac怎么恢復出廠系統?蘋果系統怎么重裝系統? 461004
我為什么要選擇RabbitMQ ,RabbitMQ簡介,各種MQ選型對比 430758
免費天氣API,全國天氣 JSON API接口,可以獲取五天的天氣預報 362526
最新MyEclipse8.5注冊碼,有效期到2020年 (已經更新) 351145
免費天氣API,天氣JSON API,不限次數獲取十五天的天氣預報 316572
Elasticsearch教程(四) elasticsearch head 插件安裝和使用 236611
Jackson 時間格式化,時間注解 @JsonFormat 用法、時差問題說明 200323
談談斐訊路由器劫持,你用斐訊路由器,你需要知道的事情 145605
Elasticsearch教程(一),全程直播(小白級別) 126062
Elasticsearch教程(五) elasticsearch Mapping的創建 102769

騷碼加入我們 / 千人QQ群:259217951

入群需要5元為的是沒有垃圾廣告,如果沒有QQ錢包,可以加群主拉進。

二維碼生成 來自 >> 二維碼生成器。

支付掃碼

所有贊助/開支都講公開明細,用于網站維護:贊助名單查看

查看我的收藏

正在加載... ...

时时乐上海走势图连线