JSON学习笔记
来源:互联网 发布:ibm云计算 编辑:程序博客网 时间:2024/04/30 14:31
今天简单学了下JSON,整理了笔记如下:
JSON:
- 概述:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快)。
- 语法:
- JSON 语法是 JavaScript 对象表示语法的子集。
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数
- JSON名称/值对:
- JSON 数据的书写格式是:名称/值对;
- 名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:
"firstName":"John" ,这很容易理解,等价于这条 JavaScript 语句:
firstName="John"
- JSON值:
- 数字(整数或浮点数);
- 字符串(在双引号中);
- 逻辑值(true或false);
- 数组(在方括号中);
- 对象(在花括号中);
- 函数;
- null;
- JSON 语法是 JavaScript 对象表示语法的子集。
- 基础结构:
- 对象: 对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理 解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
- 数组: 数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
- 经过对象、数组2种结构就可以组合成复杂的数据结构了。
- 示例:
- 名称/值对:
{"firstName":"Brett"}
数组:
{
"people":[
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
]
}
- 对象:
{"programmers":[
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
],
"authors":[
{"firstName":"Isaac","lastName":"Asimov","genre":"sciencefiction"},
{"firstName":"Tad","lastName":"Williams","genre":"fantasy"},
{"firstName":"Frank","lastName":"Peretti","genre":"christianfiction"}
]
}
- 名称/值对:
- 格式应用:
- 赋值给变量:
var people={"programmers":[{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
]
}
- 访问数据:
people.programmers[0].lastName;
- 修改数据:
people.musicians[1].lastName=
"Rachmaninov"
;
- 换回字符串; 最终结论是,如果要处理大量 JavaScript 对象,那么 JSON 是一个好选择,这样就可以轻松地将数据转换为可以在请求中发送给服务器端程序的格式。
- 赋值给变量:
- 概念比较:
- 和XML的比较:
- JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。这使得XML在程序判读上需要比较多的功夫。主要的原因在于XML的设计理念与JSON不同。XML利用标记语言的特性提供了绝佳的延展性(如XPath),在数据存储,扩展及高级检索方面具备对JSON的优势,而JSON则由于比XML更加小巧,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。
- 实例比较:
- 用XML表示中国部分省市数据如下:
<?xmlversion="1.0"encoding="utf-8"?>
<country>
<name>中国</name>
<province>
<name>黑龙江</name>
<cities>
<city>哈尔滨</city>
<city>大庆</city>
</cities>
</province>
<province>
<name>广东</name>
<cities>
<city>广州</city>
<city>深圳</city>
<city>珠海</city>
</cities>
</province>
<province>
<name>台湾</name>
<cities>
<city>台北</city>
<city>高雄</city>
</cities>
</province>
<province>
<name>新疆</name>
<cities>
<city>乌鲁木齐</city>
</cities>
</province>
</country>
- 用JSON表示如下:
{
"name":"中国",
"province":[
{
"name":"黑龙江",
"cities":{
"city":["哈尔滨","大庆"]
}
},
{
"name":"广东",
"cities":{
"city":["广州","深圳","珠海"]
}
},
{
"name":"台湾",
"cities":{
"city":["台北","高雄"]
}
},
{
"name":"新疆",
"cities":{
"city":["乌鲁木齐"]
}
}
]
}
- 编码的可读性,xml有明显的优势,毕竟人类的语言更贴近这样的说明结构。json读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过json的索引.province[0].name就能够读取“黑龙江”这个值。编码的手写难度来说,xml还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而xml却包含很多重复的标记字符。
- 和XML的比较:
- 参考文献:
- 百度百科:http://baike.baidu.com/link?url=vJ3CNoXXScpx4nhGbi8h6zIRHc-Boe_JlU0BpiTK6DzKrGloH5xVs1ILRcz_UwVn5O6bmc9HgH5lTqNO7QD5CK
- 维基百科:http://zh.wikipedia.org/wiki/JSON
0 0
- Json(Json.Net)学习笔记
- JSON学习笔记
- JSON学习笔记
- json学习笔记
- JSON学习笔记
- json格式学习笔记
- JSON学习笔记(-)
- JSON学习笔记
- JSON学习笔记
- json学习笔记
- Json学习笔记
- json学习笔记
- JSON学习笔记
- JSON taglib学习笔记
- struts2 Json 学习笔记
- JSON学习笔记一
- Ajax、json学习笔记
- Json 学习笔记
- 矩阵顺时针旋转90°、180°、270°
- YouCompleteMe的安装
- 技术宅必读!科幻经典!“蒸汽朋克”圣经!人类的命运,将在术狂飙中走向何方?
- hibernate学习:一对一双向外键关联
- 件和规哦IPUIYui突然热让他维特认为
- JSON学习笔记
- Git配置SSH,并Push到GitHub上的相关流程
- pm_notifier 接收待机事件
- 《算法导论》笔记(8) 动态规划、贪心法、摊还分析 简述
- iOS开发-新浪微博自定义tabbar的实现
- findContours函数参数说明及相关函数
- git和svn开发流程
- HTMLParseer 获取标签内容
- 安装 Oracle 客户端