参考文章: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>