JSON(Java Script Object Notation)使用JavaScript语法,是用于存储和传输数据的格式,通常用于服务端向网页传递数据。JSON格式仅仅是一个文本,文本可以被任何编程语言读取及作为数据格式传递(一种类似js中的对象格式的字符串,json它是一个字符串,只不过长的像对象)从上面的描述中我们可以看到如下知识
JSON的规则:数据放在了一对引号当中,用{}或者是[]括起来;里面的每一个数据都是以键值对表示(key:value);key必须放双引号,单引号不行:每个数据之间用逗号隔开.
JSON的用途:用于js与后端进行数据的交互
JSON属性值:只能是10进制数值,字符串(双引号),布尔值和null,数组,符合JSON要求的对象(言外之意是不能为函数,NaN,+(-)Infinity和undefined)。
<script> //json的数组格式 var arr = [‘davina‘, ‘amy‘, ‘lisa‘]; //存储字符串的数组 console.log(arr[2]);//lisa var arr1 = [arr, { "name": "dvaina", "age": 18 }, { "name": "lisa", "age": 20 }] console.log(typeof arr1, arr1[2].name); //object lisa </script>
JSON对象的方法:stringify()和parse().
JSON.stringify()方法将一个对象转成JSON格式的字符串,如果对象中的key没有加引号,也是可以转换的,转换后的结果会自动给它加上引号。
一个参数的情况:
<script> var obj1 = [1, 2, 3]; var obj2 = { "name": ‘dvaina‘, "age": ‘20‘ }; var obj3 = { name: ‘lisa‘, "age": ‘20‘ }; console.log(JSON.stringify(obj1)); //[1,2,3] console.log(JSON.stringify(obj2)); //{"name":"dvaina","age":"20"} console.log(JSON.stringify(obj3)); //{"name":"lisa","age":"20"} //stringify()方法把数学对象转换成字对象的字符串形式 console.log(JSON.stringify(Math)); //{} console.log(JSON.stringify(new Boolean(true))); //true //stringify()方法把日期对象转换成字符串 console.log(JSON.stringify(new Date())); //"2019-12-09T06:22:34.685Z" //转换中,如果对象成员是undefined或函数,成员会忽略 //如果数组的成员是undefined或者函数,则值会转成null obj4 = { a: function () { }, b: undefined, c: [function () { }, undefined], } console.log(JSON.stringify(obj4)); //{"c":[null,null]} </script>
第二个参数也可以是一个函数或数组
<script> //如果第二个参数是函数,序列化过程中的每个属性都会被这个函数转化和处理 var str = { "name": "davina", "age": 18, "phone": 11111111 } var jsonStr = JSON.stringify(str, function (key, value) { if (key == "phone") { return "(0713)" + value; } else if (typeof value === "age") { return value + 2; } else { return value; } }) console.log(jsonStr) //{"name":"davina","age":18,"phone":"(0713)11111111"} //如果是数组,那只有包含在这个数组中的属性才会被序列化到json字符串中 var str1 = { "name": "davina", "age": 18, "phone": 11111111 } var jsonStr1=JSON.stringify(str1,["name","age","phone","address"]); console.log(jsonStr1); //{"name":"davina","age":18,"phone":11111111} //如果是null,那和空一样 </script>
第三个参数用于美化输出——不建议用,忽略。
JSON.parse()将字符串转化成对象,如果传入的不是有效JSON格式,会报错。JSON.parse()也可以接收一个函数参数,在每个键值对上调用,这个函数被称为还原函数,该函数接收两个参数,一个键和一个值。如果还原函数返回undefined,那就要从结果中删除相应的键,如果返回其它值,则将值插入到结果中。
<script> console.log(JSON.parse(‘{}‘)); //{} console.log(JSON.parse(‘true‘)); //true var o = JSON.parse(‘{"name":"davina"}‘); console.log(o.name); //dvaina //JSON.parse()也可以接收一个函数参数,在每一个键值对调用,这个函数被称为还原函数,这个函数接收两个参数,一个键和一个值,返回一个值 var book = { "name": "js", "date": new Date(2019, 9, 1) } var jsonStr = JSON.stringify(book); console.log(jsonStr)//{"name":"js","date":"2019-09-30T16:00:00.000Z"} var bookName = JSON.parse(jsonStr, function (key, value) { if (key == ‘date‘) { return new Date(value); } return value; }) console.log(bookName.date.getFullYear());//2019 </script>
eval()类似于JSON.parse()方法,可以将json字符串转换成json对象,但是它也可以执行不符合json格式的代码,所以尽量少用或不用。
原文地址:https://www.cnblogs.com/davina123/p/11929103.html