淺談 JSON.stringify 方法

原文  http://www.cnblogs.com/52cik/p/js-json-stringify.html  感謝


用過 json 的應該都知道,把一個對象通過 stringify 之後提交給後臺或者存儲在

Storage

裏是很常用的手段。

但是 IE6-8 下沒有 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);

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

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章