淺談 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


免責聲明!

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



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