• JSON操作方法


    一 JSON.stringify

    JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串,如果指定了replacer是一个函数,则可以替换值,或者如果指定了replacer是一个数组,可选的仅包括指定的属性。

    replacer 英 [rɪ'pleɪsə]   美 [rɪ'pleɪsə]   n.替代者,复原者

    语法:

    JSON.stringify(value[, replacer [, space]])

    1. value

    将要序列化成 一个JSON 字符串的值。

    2. replacer 可选

    如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;如果该参数为null或者未提供,则对象所有的属性都会被序列化。

    3. space 可选

    指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;如果该参数为字符串(字符串的前十个字母),该字符串将被作为空格;如果该参数没有提供(或者为null)将没有空格。

    replacer参数可以是一个函数或者一个数组。作为函数,它有两个参数,键(key)值(value)都会被序列化。

    • 如果返回一个 Number, 转换成相应的字符串被添加入JSON字符串。
    • 如果返回一个 String, 该字符串作为属性值被添加入JSON。
    • 如果返回一个 Boolean, "true" 或者 "false"被作为属性值被添加入JSON字符串。
    • 如果返回任何其他对象,该对象递归地序列化成JSON字符串,对每个属性调用replacer方法。除非该对象是一个函数,这种情况将不会被序列化成JSON字符串。
    • 如果返回undefined,该属性值不会在JSON字符串中输出。
    function replacer(key, value) {
      if (typeof value === "string") {
        return undefined;
      }
      return value;
    }
    
    var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
    var jsonString = JSON.stringify(foo, replacer);

    JSON序列化结果为 {"week":45,"month":7}.

    如果replacer是一个数组,数组的值代表将被序列化成JSON字符串的属性名。

    JSON.stringify(foo, ['week', 'month']);  
    // '{"week":45,"month":7}', 只保留“week”和“month”属性值。

    space 参数用来控制结果字符串里面的间距。如果是一个数字, 则在字符串化时每一级别会比上一级别缩进多这个数字值的空格(最多10个空格);如果是一个字符串,则每一级别会比上一级别多缩进用该字符串(或该字符串的前十个字符)。

    JSON.stringify({ a: 2 }, null, 4);

    二 JSON.parse

    JSON.parse() 方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象。提供可选的reviver函数用以在返回之前对所得到的对象执行变换(操作)。

    语法:

    JSON.parse(text[, reviver])

    text

    要被解析成JavaScript值的字符串。

    reviver 可选

    如果是一个函数,则规定了原始值如何被解析改造,在被返回之前。

    JSON.parse('{"p": 5}', function (k, v) {
        if(k === '') return v;     // 如果到了最顶层,则直接返回属性值,
        return v * 2;              // 否则将属性值变为原来的 2 倍。
    });                            // { p: 10 }
  • 相关阅读:
    .net 运行中出现的错误解决方法记录
    SVC 工作过程中出现的错误记录(SEO项目)
    TreeCollection2
    晴天前100页评论标签云分析显示
    python numpy数组中的复制问题
    Task多线程进行多进程
    python list(列表)和tuple(元组)
    并发无锁队列学习(概念介绍)
    关联型容器
    【原创】k8s源代码分析-----EndpointController
  • 原文地址:https://www.cnblogs.com/aimee2004/p/9663064.html
Copyright © 2020-2023  润新知