淺談 JSON.stringify 方法
今天我們來簡單介紹下 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);其實,我覺得這是個非常雞肋的功能,,一般情況下卻是沒啥用。 好了,今天的分享就這些了,希望對新手朋友有所協助。