JSON数据格式学习
来源:互联网 发布:sql存储过程详细教学 编辑:程序博客网 时间:2024/06/05 14:48
JSON
https://github.com/douglascrockford/JSON-js
JSON是JavaScript Object Notation的简写,是JavaScript对象表示法,即使用JavaScript语法来描述数据对象,但是又独立于语言和平台。JSON是轻量级的纯文本数据交换格式,具有层级结构,容易理解。与XML比较,具有更小、更快、更易解析的特点(没有结束标签、更短、读写的速度快,且能使用内建的JavaScript eval()方法进行解析)。
JSON语法
数据在名称/值中,即 key/value(键/值)对
- 名称:必须是字符串
- 值:可以是数字(整数、浮点数)、字符串、逻辑值(true、false)、数组(在中括号中)、对象(在大括号中)、null
- key 和 value 中使用冒号:分割
- 每个 key/value 对使用逗号,分割
- 数据由逗号分隔
- 大括号保存对象
- 中括号保存数组
- 逗号分隔数据
JSON数据定义
var personInfo = { "name":"devZhang", "height":83.2, "age":null, "male":true, "company":[ {"name":"公司1"}, {"name":"公司2"}, {"name":"公司3"}, {"name":"公司4"}, {"name":"公司n"} ], "team":[ "iOS", "Android", "Java", "H5", [ "dev01", "dev02" ] ], "education":{ "school":"xx大学", "education":"学士", "time":"20xx~20xx", "course":[ "C语言", "Java课程", "网络基础" ] }};
JSON数据的使用
使用点号.来访问对象的值,或使用中括号[]来访问对象的值。
- 获取:
- 单个属性值的获取
- 多个属性值的获取 ,即循环获取(注意:只能使用中括号来获取,不能使用点号来获取)
// 单个值var name = personInfo.name;var name = personInfo["name"];var company = personInfo.company[0].name;var school = personInfo.education.school;// 多个值for (x in sites){ var value = personInfo[x];}
- 修改
personInfo.name = "devZhangTmp";
- 删除
delete personInfo.name;delete personInfo["name"];
数据格式转换:JSON通常用于与服务端交换数据,即发送数据给服务端,或从服务端接收数据。
字符串转换成对象:JSON.parse()的使用
接收服务器数据时一般是字符串,因此需要通过方法JSON.parse()将字符串转换成对象进行使用。
格式:JSON.parse(text字符串, reviver转换结果函数)
示例:
- 无reviver情况
var text = '{ "name":"devZhang", "job":"iOSDev", "workDate":"2007-07-01"}'var obj = JSON.parse(text);var name = obj.name;
- 有reviver情况
var text = '{ "name":"devZhang", "job":"iOSDev", "workDate":"2007-07-01"}'var obj = JSON.parse(text, function (key, value) { if (key == "workDate"){ return new Date(value); } else { return value; }});var name = obj.name;// 等价于使用eval("(" + 字符串 + ")"),即var obj = eval("(" + text + ")");
对象转换成字符串:JSON.stringify()的使用
向服务端发送的数据一般时字符串,因此需要通过方法JSON.stringify()将对象转换成字符串进行使用。
格式:JSON.stringify(value有效的JSON字符串, replacer转换结果的函数或数组, space文本添加缩进/空格/换行符)
示例:
var obj = { "name":"devZhang", "job":"iOSDev", "workDate":"2007-07-01"};var textJSON = JSON.stringify(obj);
函数解析
JSON中的值不允许包含函数,但你可以将函数作为字符串存储,之后再将字符串转换为函数。
示例:
字符串转的对象时的解析:
var text = '{ "name":"devZhang", "alexa":"function () {return 11;}"}';var obj = JSON.parse(text);obj.alexa = eval("(" + obj.alexa + ")"); // 字符串函数解析后再调用var message = obj.name + " Alexa 排名:" + obj.alexa();
注意:要 eval 这里要添加(‘(’ + obj.alexa + ‘)’)呢?原因在于:eval 本身的问题。 由于 json 是以 {} 的方式来开始以及结束的,在 js 中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使 eval 函数在处理 JavaScript 代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量 {},如若不加外层的括号,那么 eval 会将大括号识别为j avascript 代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。
对象转字符串时的解析:
var obj = { "name":"devZhang", "alexa":function () {return 11;}};obj.alexa = obj.alexa.toString(); // 函数转换成字符串再转换成对象var text = JSON.stringify(obj);
使用注意:
- 访问对象时,使用点号,或中括号
- 循环访问对象时,使用中括号
- JSON不允许包含函数,但可以将函数作为字符串存储,使用时再将字符串转换成函数,JSON.parse()解析时正常使用,JSON.stringify()解析时会删除函数
- Android学习-JSON数据格式
- JSON数据格式学习
- JSON数据格式学习笔记
- json数据格式学习总结
- json数据格式学习
- JSON数据格式学习
- [ajax 学习笔记] json数据格式
- JSON数据格式学习笔记1
- json数据格式
- Json数据格式
- json数据格式
- JSON数据格式
- JSON数据格式
- JSON数据格式
- JSON数据格式
- JSON数据格式
- JSON数据格式
- Json 数据格式
- burpsuite
- 开发常用工具-RGB在线转换
- IRedMail个性化设置
- Python并行计算pp模块实践笔记
- 小猪的C语言快速入门系列(四)
- JSON数据格式学习
- Kubernetes集群中部署dashboard
- ArcGIS API for JavaScript 离线地图调用源码示例功能
- NOIP 模板 跪求大佬们指正错误
- 文章标题
- bootstrap 多重模态框 滚动条消失问题
- sdnu1039
- MP算法与OMP算法
- git命令行常用操作