JSON.stringify 方法


 

 

用過 json 的應該都知道,把一個對象通過 stringify 之后提交給后台或者存儲在 Storage 里是很常用的手段。
但是 IE6-7 下沒有 JSON 對象,所以要借助 json2.js 來實現。

今天我們來簡單介紹下 stringify 方法的一些正確使用姿勢吧。
當然,讓高手們賤笑了,本文只是分享一些方法給新手朋友們。

var data = [
    {name: "王尼瑪", sex:1, age: 30}, {name: "王尼美", sex:0, age: 20}, {name: "王大錘", sex:1, age: 30} ]; var str_json = JSON.stringify(data); console.log(str_json);

這個是我們日常用法,非常簡單,對吧。

比如說,我們的數據非常復雜,還有類似頭像,昵稱,個人簽名之類的信息。
可是我保存在本地,只需要用戶名,和性別,腫么破呢?
也許你會說 so easy, 遍歷數據重新提取下即可。
例如:

var data = [
    {name: "王尼瑪", sex:1, age: 30}, {name: "王尼美", sex:0, age: 20}, {name: "王大錘", sex:1, age: 30} ]; for (var i=0, new_data=[]; i<data.length; i++) { new_data.push({ name: data[i].name, sex: data[i].sex }); } var str_json = JSON.stringify(new_data); console.log(str_json);

確實分分鍾搞定。

其實我們只需要用 stringify 第二個參數即可簡單處理這種問題。

var data = [
    {name: "王尼瑪", sex:1, age: 30}, {name: "王尼美", sex:0, age: 20}, {name: "王大錘", sex:1, age: 30} ]; var str_json = JSON.stringify(data, ["name", "sex"]); console.log(str_json);

第二個參數只要傳入需要的keys數組,就非常輕松的就完成這種處理了。

當然如果我們要更糾結的處理,比如要把 1,0 修改為男女,那么第二個參數可以用回調函數來處理。

var data = [
    {name: "王尼瑪", sex:1, age: 30}, {name: "王尼美", sex:0, age: 20}, {name: "王大錘", sex:1, age: 30} ]; var str_json = JSON.stringify(data, function (k, v) { if (k === "sex") { return ["女", "男"][v]; } return v; }); console.log(str_json);

第二個參數如此強悍,為我們省去了不少麻煩。

還有第三個參數,用於格式化字符串用的。

var data = [
    {name: "王尼瑪", sex:1, age: 30}, {name: "王尼美", sex:0, age: 20}, {name: "王大錘", sex:1, age: 30} ]; var str_json = JSON.stringify(data, null, "\t"); console.log(str_json); str_json = JSON.stringify(data, ["name", "sex"], "\t"); console.log(str_json);

其實,我覺得這是個非常雞肋的功能,,一般情況下卻是沒啥用。

好了,今天的分享就這些了,希望對新手朋友有所幫助。

 

參考資料:

JSON.stringify() - JavaScript | MDN

JSON in JavaScript

 
分類:  JavaScript
標簽:  jsjson


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM