JSON.stringify 函數 (JavaScript)講解

JSON 2016-08-22 18:34:55 14337

將 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.267332.tw/blog/25.html

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

本文主題:

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

關于作者
一個低調而悶騷的男人。
相關文章
最新文章
當我談 HTTP 時,我談些什么? 2280
新浪短鏈(t.cn)最新申請官方API的方法講解。 13965
QUIC / HTTP3 協議詳細分析講解 1996
恭喜那個做云存儲的七牛云完成 F 輪 10 億人民幣的融資,開啟新的云旅程 3013
Autojs怎么安全加密?Autojs在線加密工具注意事項。 5954
Java JSON 組件選型之 FastJson 為什么總有漏洞? 17326
使用七牛云存儲實現圖片API,自動刪除圖片方案合集 3464
神速ICP備案經驗分享,ICP備案居然一天就通過了 4655
百度加強推送URL鏈接,百度SEO強行推送鏈接JavaScript代碼案例講解。 4598
SOJSON 拓展服務器被DDos攻擊了一晚上,是如何解決的? 6162
最熱文章
蘋果電腦Mac怎么恢復出廠系統?蘋果系統怎么重裝系統? 490605
我為什么要選擇RabbitMQ ,RabbitMQ簡介,各種MQ選型對比 441958
最新MyEclipse8.5注冊碼,有效期到2020年 (已經更新) 390823
免費天氣API,全國天氣 JSON API接口,可以獲取五天的天氣預報 380678
Elasticsearch教程(四) elasticsearch head 插件安裝和使用 257333
Jackson 時間格式化,時間注解 @JsonFormat 用法、時差問題說明 227545
談談斐訊路由器劫持,你用斐訊路由器,你需要知道的事情 155825
Elasticsearch教程(一),全程直播(小白級別) 133640
Java 信任所有SSL證書,HTTPS請求拋錯,忽略證書請求完美解決 121435
Elasticsearch教程(五) elasticsearch Mapping的創建 106604
支付掃碼

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

查看我的收藏

正在加載... ...

广西十一选5开奖结