• 浅谈JSON数据


    文章目录

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



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

    {
      KEY:VALUE
    }
    
    • 1
    • 2
    • 3
    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
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    图片结果分析

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

    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
  • 相关阅读:
    SuperMap GIS基础产品FAQ集锦(20240617)
    ElasticSearch(七):集群架构
    前端基础之《Bootstrap(5)—CSS组件_字体图标、按钮组和下拉菜单》
    2023上半年薪资报告出炉!人均月入过万?!
    文章参考链接
    MySQL你到底都加了什么锁?
    Spring 常见面试题总结
    Ubuntu18.04安装nvidia显卡驱动
    【论文系列】01_如何做好文献阅读及笔记整理
    从0开始python学习-33.夹具@pytest.fixture(scope=““,params=““,autouse=““,ids=““,name=““)
  • 原文地址:https://blog.csdn.net/qq_33966310/article/details/126770191