今天我想描述的JSON(也叫JavaScript对象表示法)是只针对于JavaScript而言所写,但有一个点是你需要知道,就是JSON并非只属于JavaScript,目前很多编程语言也能使用。JSON是一种数据格式而非编程语言。
JSON的语法可以用三种类型的值表示
1.简单值(字符串、数字、布尔值、null)
{ "title":"helloWorld", // JSON字符串尽可能用""表示,勿用单引号'',不然可能会出现语法错误 "name":"张三", "age":22, "type":true, "date":null, "test":undefined }
注:上面代码中"test":undefined 经过JSON的各种操作,都会被剔除掉,所以说JSON不支持undefined
2.对象
{ "name":"张三", "course":{ "title":"Chinese", " time":"2020-3-4" } }
注:上面JSON对象的表示与JavaScript对象字面量表示的区别有二:其一,JavaScript需要声明变量(let/var),其二,JavaScript结束后最后需要;表示
3.数组
[ { "name":"jean", "age":18 } , { "name":"chee", "age":21 } , { "name":"lucky", "age":44 } ]
JSON数组遍历(JSON数组拥有JavaScript对数组操作的功能,如arr.push.....)
let a=[ { "name":"jean", "age":18 } , { "name":"chee", "age":21 } , { "name":"lucky", "age":44 } ]; // 第一种方法 for(let s=0;s<a.length;s++){ console.log(a[s].name); } // 第二种方法 for(let item in a){ console.log(a[item].name); }
JavaScript对象与JSON的相互转化
(1)定义一个JavaScript对象
let js={ title:"hello", course:["高数","kiry" ] , school:{ name:"college", location:"North" } } ;
(2) 如何获取数据
查询title:js.title
查询第一门课程:js.course[0]
查询学校的地址:js.school.location
(3)JavaScript对象转化为JSON对象let jsonObj=JSON.stringify(js);
let jsonObj=JSON.stringify(js);
console.log(jsonObj);
// 结果{"title":"hello","course":["高数","kiry"],"school":{"name":"college","location":"North"}} // 第一种写法 stringify 中第二项表示过滤器,过滤出只有["title","course"]的结果 let jsonObj=JSON.stringify(js,["title","course"]); console.log(jsonObj); // 结果{"title":"hello","course":["高数","kiry"]} // 第二种写法stringify 中第三项表示 字符串缩进 数值表示(max为10)超过10 ,默认为10 let jsonObj=JSON.stringify(js,["title","course"],4); console.log(jsonObj); // 结果 //{ // "title": "hello", // "course": [ // "高数", // "kiry" // ] //}
// stringify 中第三项表示 字符串缩进 字符串表示
let jsonObj=JSON.stringify(j,null,"***");
console.log(jsonObj);
//{
//***"title": "hello",
//***"course": [
//******"高数",
//******"kiry"
//***],
//***"school": {
//******"name": "college",
//******"location": "North"
//***}
//}
(4)JSON对象转化为JavaScript对象
let recover=JSON.parse(jsonObj);
console.log(recover);
tip
目前在项目开发中,JSON常用于前后端对接时,交互数据所用