JSON.parse() 使用注意事项·

本文详细介绍了JSON数据的规范,包括字符串、对象和数组的正确格式,并通过实例演示了如何使用JSON.parse()和JSON.stringify()进行数据转换。同时,探讨了JavaScript与JSON之间的区别,以及常见错误处理。

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

参考文章:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
第一个参数一定是 一个有效的字符串对象
有效指的是
1. 外面一定是'' 单引号
2. 如果有键的话  一定是"" 双引号

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON
JSON.parse('aaaa');

这样肯定是报错的,

JSON.parse('"aaaa"');

这样才不会报错

 

 <script>
        /* 
            https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON
            JSON 是一种语法,用来序列化对象、数组、数值、字符串、布尔值和 null 。
            它基于 JavaScript 语法,但与之不同:JavaScript不是JSON,JSON也不是JavaScript。但是可以相互转化
            
           

            json 只有2个方法
                parse()             将json转化为object    
                stringify()         将object化为JSON
            
        
            JavaScript 与 JSON 的区别    
                JavaScript类型	         JSON 的不同点
                   对象和数组              属性名称必须是双引号括起来的字符串;最后一个属性后不能有逗号。
                   数值	                  禁止出现前导零( JSON.stringify 方法自动忽略前导零,而在 JSON.parse 方法中将会抛出 SyntaxError);如果有小数点, 则后面至少跟着一位数字。
                   字符串	              只有有限的一些字符可能会被转义;禁止某些控制字符; Unicode 行分隔符 (U+2028)和段分隔符 (U+2029)被允许 ; 字符串必须用双引号括起来。请参考下面                             的示例,可以看到 JSON.parse() 能够正常解析,但将其当作JavaScript解析时会抛出 SyntaxError 错误:


                总结:字符串和对象数组的最外面一定是 '' , 属性名称必须是双引号括起来的字符串;最后一个属性后不能有逗号。 let obj='{"name":"qps"}';

                
                上面写了json 数据是什么样子的,下面是实战
                let code = '"\u2028\u2029"';
                JSON.parse(code);  // 正常
                eval(code);  // 错误

                可以看到除了数值都是''的字符串,数值没有要求
                    let num1=JSON.parse(1);  //1
                    let num2=JSON.parse('"1"'); //'1'
                    let num3=JSON.parse("1");   //1
         */
        
        // 是不是json数据的检验方法是 看JSON.parse() 转化为object 的时候有没有报错,没有报错就是json 


        //  let  obj1={name:'qps'};//这是正常的object对象
        //  let  json1=JSON.stringify(obj1);//object转化为json
        //  let  aa1=JSON.parse(json1)//json转化为object
        //  console.log('json1',json1);
        //  console.log('aa1',aa1);





        // let num1=JSON.parse(1);  //1
        // let num2=JSON.parse('"1"'); //'1'
        // let num3=JSON.parse("1");   //1
        
        // console.log('num1',num1);
        // console.log('num2',num2);
        // console.log('num3',num3);
        // console.log('num2',typeof num2);
        // console.log('num3',typeof num3);
        
    
    // 报错信息   Unexpected token u in JSON at position 0

        /* 
            1. undefined
         */

        // let err1=JSON.parse(undefined)// Unexpected token u in JSON at position 0    因为不是json 数据  null可以但是undefined不行
        // console.log('err1',err1);
        // let err2=JSON.parse('"undefined"')// 这样就可以了 最外面一定是'' 要不然也会报错
        // console.log('err2',err2);


        /* 
            不是json 使用parse
         */
        let obj={"name":"qps"};
        let json=JSON.parse(obj)
        console.log('json',json);
        console.log('obj',obj);

        //undefined 特殊可以转换成json ,但是json.parse() 在解析的时候就有会报错了 
        // let json=JSON.stringify(undefined);
        // let obj=JSON.parse(json)
        // console.log('json',json);
        // console.log('obj',obj);
        
    
    </script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值