zoukankan      html  css  js  c++  java
  • JSON.parse()与JSON.stringify()

    JSON.stringify()【从一个对象中解析出字符串】

    语法

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

    1.只有一个参数

    var data={name: "goatling", age: "18", sex: "女"}
    data = JSON.stringify(data)
    console.log(data) //{"name":"goatling","age":"18","sex":"女"}
    console.log(typeof(data)) //String 字符串
    

    注意

    布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值

    undefined、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)

    2.1 有两个参数,参数1是数组,参数2是函数

    函数有两个参数,分别是key和value

    function replacer(key, value) {
      if (typeof value === "string") {
        return undefined;
      }
      return value;
    }
    
    var foo = ["Mozilla", "box", 45, "car", 7];
    var jsonString = JSON.stringify(foo, replacer);
    console.log(jsonString)//[null,null,45,null,7]
    

    2.2 有两个参数,参数1是对象,参数2是函数

    函数有两个参数,分别是key和value

    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);
    console.log(jsonString)//:{"week":45,"month":7}
    

    3.1 有两个参数,参数1是数组,参数2是数组

    函数有两个参数,分别是key和value

    var foo = ["Mozilla", "box", 45, "car", 7];
    var stu=["how","are","u", "box"]
    var jsonString = JSON.stringify(foo, stu);
    console.log(jsonString) //["Mozilla","box",45,"car",7]
    //结果是只有第一个值序列化了,第二个被忽略了。
    

    注意:当参数1是数组,参数2也是数组时,参数2没有用处(这只是我现在的认知水平)

    3.2 有两个参数,参数1是对象,参数2是数组

    函数有两个参数,分别是key和value

    var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
    var stu=["how","are","u", "model"]
    var jsonString = JSON.stringify(foo, stu);
    console.log(jsonString) //{"model":"box"}
    //参数2就是类似筛子,把在第二个数组里有的给筛选出来。
    

    4. 有三个参数时

    第三个参数的作用
    • 如果是一些转义字符,比如“ ”,表示回车,那么它每行一个回车。
    • 如果仅仅是字符串,就在每行输出值的时候把这些字符串附加上去就OK。当然,最大长度也是10个字符
    • 如果是一个数字的话,那么它就定义缩进几个字符,范围是:0到10(数字小于1,则默认为0,大于10,则默认为10)
    var foo = { transport: "car", month: 7};
    var jsonString1 = JSON.stringify(foo, null, '	')
    console.log(jsonString1)
    
    /* 输出结果:
    {
        "transport": car,
        "month": 7
    }
    */
    
    var jsonString2 = JSON.stringify(foo,null,"test")
    console.log(jsonString2)	
    {
    	test"transport": "car",
    	test"month": 7
    }
    
    var jsonString3 = JSON.stringify(foo,null,50)
    console.log(jsonString3)
    {
    				"transport": "car",
    				"month": 7
    }
    
    
    var jsonString3 = JSON.stringify(foo,null,0)
    console.log(jsonString3)
    {"transport": "car","month": 7}
    
    

    JSON.parse()【从一个json格式的字符串中解析出json对象】

    从一个json格式的字符串解析出json对象

    例子:

    var data='{"name":"goatling","age":"18","sex":"女"}'; //定义一个对象字符串
    ​data = JSON.parse(data) //解析对象​
    console.log(data) // {name: "goatling", age: "18", sex: "女"} 一个对象。
    
    var data2='["#undefined","homePage.html","exam/batch.html","exam/exam-login.html"]'; //定义一个数组字符串
    data2 =JSON.parse(data2);
    console.log(data2)//["#undefined","homePage.html","exam/batch.html","exam/exam-login.html"]
    console.log(typeof(data2)) //object
    

    注意
    JSON.parse 只能转换json格式的字符串,非json格式的字符串用split转换。

    1. '["#undefined","homePage.html","exam/batch.html","exam/exam-login.html"]'//能解析
    2. '[#undefined,homePage.html,exam/batch.html,exam/exam-login.html]'//不是json格式,不能解析
    
    

    这是我第一次写博客,有不足处,请多多指教,谢谢!

  • 相关阅读:
    MySQL Show Processlist 整理
    由linkedin数据库泄漏引发的思考[转发]
    MySQL 严重 Bug 用户登陆漏洞[转发]
    关于博客的开始
    Linux共享库位置配置
    getopt详解
    git使用
    ArrayList读源码心得
    HashMap内部实现机制及优化第一篇
    如何才能做一个好网站系列 第三篇 最初的思路
  • 原文地址:https://www.cnblogs.com/hyx626/p/9287285.html
Copyright © 2011-2022 走看看