浅谈JSON数据

发布于:2022-12-24 ⋅ 阅读:(465) ⋅ 点赞:(0)

文章目录

浅度分析JSON数据,因为JSON数据是最重要的前后端数据交互格式之一,但在使用的过程中,你是否出现过某些字段找不到之类的问题,因为JSON格式太过严格,所以会导致一系列我们认为的“坑”



JSON数据的真实面貌,毋庸置疑就是严格的遵守key:value的格式
一个大对象,包裹着key:value就是JSON

{
  KEY:VALUE
}
  1. 在前端一般使用JSON.stringify(obj)函数来把数据转换成字符串,然后传给后端。如果你使用的是Nodejs后端则用JSON.parse(obj)就完成了前后端数据的交流,同样后端给前端返回JSON数据的时候也同理。其他语言也类似的对JSON数据进行转换
  2. 但是他也有很多规矩,在用JS做开发的时候,要注意JSON数据以下事项。不然达不到你想要的数据
  3. 先看代码和结果(建议直接看下面图片结果分析)

代码展示

    var a = {
        name:'张三',
        foo:{
            name:"张三1",
            fun:function(){
                console.log(a);
            },
            foo:{
                name:'张三2',
                age:12,
                flag:true,
                nos:undefined,
                a:null,
                f: new RegExp('\\w+'),
                e:new Date(),
                g:NaN
            },
            arr:[1,"1",null,undefined,function(){},true,[1,2,3]]
        },
    }
    
    let b = JSON.stringify(a);
    console.log(b);

// {"name":"张三","foo":{"name":"张三1","foo":{"name":"张三2","age":12,"flag":true,"a":null,"f":{},"e":"2022-08-25T08:34:37.559Z","g":null},"arr":[1,"1",null,null,null,true,[1,2,3]]}}
//为了好看点,我给他格式化一下
  let 最终JSON.stringify结果 = {
        "name":"张三",
        "foo":{
            "name":"张三1",
            "foo":{
                "name":"张三2",
                "age":12,
                "flag":true,
                "a":null,
                "f":{},
                "e":"2022-08-25T08:34:37.559Z",
                "g":null
            },
            "arr":[1,"1",null,null,null,true,[1,2,3]]
        }
    }

图片结果分析

通过观察结果,得到以下规律
在这里插入图片描述

  1. 字符串会用双引号引起来
  2. Number,null,boolean 类型都不用符号引
  3. undefined或fun函数的数据 会把这个key-value给删除掉
  4. 多余的逗号,都会智能的去掉,然后再转为符合规则的json数据
  5. RegExp定义的属性会变成 {}
  6. NaN 类型会变成 null
  7. e时间对象,会变成字符串形式
  8. 循环引用会出错误: a.c = a (报错)

对于嵌套的数组结构里面的数据:undefined,function(){} 和上面第一层写的有所不同不一样,他们都变成了null

最后

  1. 如果不留意JSON数据,本来想传一个undefined给前(后端)的,发现永远收不到,那就要思考是不是JSON数据的问题了。踩过的坑一定要填好,不然下一次还会不留意的踩到。
  2. json的应用场景可用于mongodb类的数据库,还有必要的导出文件需求的时候使用JSON格式也很快速处理
  3. 常用的数据传递除了JSON外还有 XML(用标签去划分的),YAML(用缩进来划分的),Go Struct