json的语法
json的语法
json的语法JSON规范是符合ECMAScript语法规范,这样按JSON规范描述出的字符串已是 JavaScript的原生代码串,这使之能通过eval动态的在JSON串与JavaScript对象之间进行转换。
一、Json的定义
1、JSON 语法是 JavaScript 对象表示法语法的子集
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
2、JSON的语法很简单
就是使用大括号'{}',中括号'[]',逗号',',冒号':',双引号'“”'。
3、JSON 值可以是
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
1)对象是一个无序的“‘名称/值’对”集合
一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值。
例如
{ "firstName":"John" , "lastName":"Doe" }
JavaScript 语句等价:
firstName = "John"
lastName = "Doe"
2)数组是值(value)的有序集合
一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取
例如
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
在上面的例子中,对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。
3)JSON语法可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。
4)字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。 字符串(string)与C或者Java的字符串非常相似。
5)JSON语法也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
二、把JSON字符串转换成JavaScript对象
<script type="text/javascript">
//使用script本身的函数eval将JSON串解析成对象
var e = eval(
'({' +
'employee : ' +
'{' +
'firstName: "John",' +
'lastName : "Doe",' +
'employeeNumber : 123,' +
'title : "Accountant"' +
'}' +
'})'
);
//现在我们可以使用e这个对象了,还可以以点的访问形式来访问对象的属性
alert(e.employee.firstName);
alert(e.employee.lastName);
alert(e.employee.employeeNumber);
alert(e.employee.title);
</script>
三、JSON优缺点
优点
乍看上去,使用JSON的数据分隔符的优点可能并不那么明显,但存在一个根本性的缘由:它们简化了数据访问。使用这些数据分隔符时, JavaScript引擎对数据结构(如字符串、数组、对象)的内部表示恰好与这些符号相同。
JSON的另一个优点是它的非冗长性。在XML中,打开和关闭标记是必需的,这样才能满足标记的依从性;而在JSON中,所有这些要求只需通过一个简单的括号即可满足。在包含有数以百计字段的数据交换中,传统的XML标记将会延长数据交换时间
此外,JSON受到了擅长不同编程语言的开发人员的青睐。这是因为无论在Haskell中或 Lisp中,还是在更为主流的C#和Java中,开发都可以方便地生成JSON。
缺点
和许多好东西都具有两面性一样,JSON的非冗长性也不例外,为此JSON丢失了XML具有的一些特性。命名空间允许不同上下文中的相同的信息段彼此混合,然而,显然在JSON中已经找不到了命名空间。JSON与XML的另一个差别是属性的差异,由于JSON采用冒号赋值,这将导致当XML转化为 JSON时,在标识符(XML CDATA)与实际属性值之间很难区分谁应该被当作文本考虑。
另外,JSON片段的创建和验证过程比一般的XML稍显复杂。从这一点来看,XML在开发工具方面领先于JSON。
四、JSON Vs XML
1.JSON和XML的数据可读性基本相同
2.JSON和XML同样拥有丰富的解析手段
3.JSON相对于XML来讲,数据的体积小
4.JSON与JavaScript的交互更加方便
5.JSON对数据的描述性比XML较差
6.JSON的速度要远远快于XML
- SQL Server中如何将数据导出为XML或Json文件
- python将对象转换成json(python对象与json相互转换的方法)
- 纯css和js有什么区别(CSS语法与JSON、JS对象区别比较)
- python操作json格式(详解python 3.6 安装json 模块simplejson)
- MVC JsonResult的用法
- jsonkeyvalue怎么取(替换json对象中的key最佳方案)
- sqlserver常见函数(SQL Server之JSON 函数详解)
- mysql 查询json(MySQL处理JSON常见函数的使用)
- mysql中json的支持(MySQL中json字段的操作方法)
- Json序列化对象的部分属性值
- console.table调试JSON对象或字符串
- pythonjson库(Python常用的json标准库)
- mysql的json格式解析(mysql json格式数据查询操作)
- JavaScriptSerializer对Json对象的序列化和反序列化
- react组件分析(react-diagram 序列化Json解读案例分析)
- python3json序列化(Python3.5 Json与pickle实现数据序列化与反序列化操作示例)
- 每日一典 过江之鲫(每日一典过江之鲫)
- 红色代表什么(红色代表什么意义和象征)
- 菲律宾安全吗(菲律宾安全吗2023)
- 彩礼重要吗()
- 写信告诉我今天海是什么颜色(写信告诉我今天海是什么颜色回答)
- 英语难学吗(法语比英语难学吗)
热门推荐
- dede检测写入权限(dede织梦dede5.7上传图片出现302以及Error 2038问题解决方法)
- react的动画实现(React实现动效弹窗组件)
- web压力测试工具app(十款Web服务器性能压力测试工具)
- 网站图片防盗链的常见方法
- iis操作教程(IIS支持exe文件下载配置方法附图)
- mysql数据字段默认值怎么设置(MySQL 字段默认值该如何设置)
- 阿里云对象存储oss收费吗(阿里云存储服务OSS基本概念)
- 时间日期python实例(Python之时间和日期使用小结)
- mysql存储过程和函数(MySQL存储过程的查询命令介绍)
- centos修改网络配置(CentOS设置IP连接网络实现过程图解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9