JavaScript JSON数据格式

本文介绍了JSON的基础知识,包括其作为轻量级数据交换格式的特点,遵循ECMAScript规范的子集,以及JSON数据的字符集规定。内容涵盖JSON语法、解析与序列化的规则,强调了JSON字符串转化为JavaScript对象的安全做法。同时讲解了筛选对象键值的方法,提供转化对象及字符串的函数使用详情。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSON简介

  • JSON = JavaScript Object Notation:js对象标记法,是一种轻量级的数据交换格式
  • JSON基于ECMAScript规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据
  • JSON字符集必须是UTF-8,JSON的字符集规定必须用双引号“ ”,键名也必须用双引号“ ”
  • 任何支持的数据类型都可以通过JSON来表示
  • JavaScript内置了JSON的解析
  • JSON本质就是字符串
    <script>
        var obj = {name : "OliGit", age : 20};//这是一个js对象
        // console.log(obj);
        // console.log(typeof obj);

        var jsn = '{"name" : "OliGit", "age" : 20}';//这是一个json字符串
        console.log(jsn);
        console.log(typeof jsn);
    </script>

JSON语法

JSON语法是JavaScript对象表示语法的子集

JSON语法规则

  • 数据在键值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON值可以是

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true或false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null
<script>
        // json对象表示
        {
            "name":"OliGit",
            "age":23
        }
        // JSON本质上是字符串

        // js数组表示
        var arr = ["OliGit", 23, true];
        // json数组表示
        ["OliGit", 23, true]

        // json数组对象组合嵌套使用
        [{
            "name":"aaa",
            "age":22
        },{
            "name":"bbb",
            "age":23
        }]
    </script>

JSON的解析和序列化

一般情况下,我们的json数据都是从服务端获取到的,获取的json数据是以字符串的形式返回的。这个字符串虽然是json格式的,但是不能被直接使用,我们必须将该字符串转化为一个js对象才能正常解析它

  • JavaScript函数eval()可用于将JSON文本转换为JavaScript对象
    eval()函数可编译并执行任何JavaScript代码。这隐藏了一个潜在的安全问题。(如果JSON中 包含恶意代码也会被直接执行)

  • 使用JSON解析器将JSON转换为JavaScript对象是更安全的做法。JSON解析器只会识别JSON文本,而不会执行。


JSON的解析

将JSON数据转换成JS对象

语法:JSON.parse()

        var obj = {name : "OliGit", age : 22};//这是一个JS对象
        
        var jsn = '{"name" : "OliGit", "age" : 20}';//这是一个json字符串
               
        // JSON字符串转JS对象:使用JSON.parse()方法
        var json2obj = JSON.parse(jsn);
        
        console.log(json2obj);//{name : "OliGit", age : 20}
        console.log(typeof json2obj);//object
        alert(json2obj.name);

JSON的序列化

将JavaScript对象转换成JSON数据(字符串)

语法:JSON.stringify()

        var obj = {name : "OliGit", age : 22};//这是一个JS对象
        
        var jsn = '{"name" : "OliGit", "age" : 20}';//这是一个json字符串
        
        // JS对象转JSON字符串:使用JSON.stringify()方法
        var obj2json = JSON.stringify(obj);
        
        console.log(obj2json);//{"name" : "OliGit", "age" : 22}
        console.log(typeof obj2json);//string

筛选对象键值

JSON.stringify(参数1, 参数2, 参数3):JS对象转JSON字符串

  • 参数1:要转换JS对象或数组
  • 参数2:(可选),数组或函数
    a、如果参数2是一个数组,则仅转换数组中指定的属性
    b、如果参数2为函数,则将调用该函数,并传入每个成员的键和值
  • 参数3:(可选)文本缩进、空格和换行符
        var obj = {name : "OliGit", age : 22, sex : "男"};//这是一个JS对象
        
        // var obj2json = JSON.stringify(obj);

        // var obj2json = JSON.stringify(obj, ["name", "sex"]);//仅转换数组中的name和sex属性

        // var obj2json = JSON.stringify(obj, sex);
        function sex(key, value){
            if(value == "男"){
                return "女";
            };
            return value;
        }

        var obj2json = JSON.stringify(obj, null, 6);//每一个数据前都有6个空格

        console.log(obj2json);
        console.log(typeof obj2json);

JSON.parse(参数1, 参数2):JSON字符串转JS对象

  • 参数1:要转换JSON字符串
  • 参数2:(可选)在parse函数返回之前处理结果的函数,处理每个成员的键和值
        var jsn = '{"name" : "OliGit", "age" : 20, "sex" : "男"}';//这是一个json字符串

        // var json2obj = JSON.parse(jsn);
        
        var json2obj = JSON.parse(jsn, sex);
        function sex(key, value){
            if(value == "男"){
                return "女";
            };
            return value;
        }

        console.log(json2obj);
        console.log(typeof json2obj);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值