zoukankan      html  css  js  c++  java
  • 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, "	");
    console.log(str_json);
    str_json = JSON.stringify(data, ["name", "sex"], "	");
    console.log(str_json);

    其实,我觉得这是个非常鸡肋的功能,,一般情况下却是没啥用。

    好了,今天的分享就这些了,希望对新手朋友有所帮助。

    参考资料:

    JSON.stringify() - JavaScript | MDN

    JSON in JavaScript

     
  • 相关阅读:
    Codeforces 1255B Fridge Lockers
    Codeforces 1255A Changing Volume
    Codeforces 1255A Changing Volume
    leetcode 112. 路径总和
    leetcode 129. 求根到叶子节点数字之和
    leetcode 404. 左叶子之和
    leetcode 104. 二叉树的最大深度
    leetcode 235. 二叉搜索树的最近公共祖先
    450. Delete Node in a BST
    树的c++实现--建立一棵树
  • 原文地址:https://www.cnblogs.com/tongbiao/p/7008549.html
Copyright © 2011-2022 走看看