通过实例解析json与jsonp原理及使用方法
1.json与jsonp的引入
在ajax中JSON用来解决数据交换问题,而JSONP来实现跨域。
备注:跨域也可以通过服务器端代理来解决;
理解:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。
2.JSON:是一种基于文本的数据交换方式,或者叫做数据描述格式,是否该选用它首先肯定要关注它所拥有的优点。
JSON的优点:
- 1)基于纯文本,跨平台传递极其简单;
- 2)Javascript原生支持,后台语言几乎全部支持;
- 3)轻量级数据格式,占用字符数量极少,特别适合互联网传递;
- 4)可读性较强,虽然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的;
- 5)容易编写和解析,当然前提是你要知道数据结构;
JSON的格式或者叫规则:
JSON能够以非常简单的方式来描述数据结构,XML能做的它都能做,因此在跨平台方面两者完全不分伯仲。
- 1)JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符。
- 2)大括号{}用来描述一组“不同类型的无序键值对集合”(每个键值对可以理解为OOP的属性描述),方括号[]用来描述一组“相同类型的有序数据集合”(可对应OOP的数组)。
- 3)上述两种集合中若有多个子项,则通过英文逗号,进行分隔。
- 4)键值对以英文冒号:进行分隔,并且建议键名都加上英文双引号"",以便于不同语言的解析。
- 5)JSON内部常用数据类型无非就是字符串、数字、布尔、日期、null这么几个,字符串必须用双引号引起来,其余的都不用,日期类型比较特殊,这里就不展开讲述了,
只是建议如果客户端没有按日期排序功能需求的话,那么把日期时间直接作为字符串传递就好,可以省去很多麻烦。
示列1:{}用来描述一组“不同类型的无序键值对集合” varperson={ "Name":"Bob", "Age":32, "Company":"IBM", "Engineer":true } 示列2:[]用来描述一组“相同类型的有序数据集合” varmembers=[ { "Name":"Bob", "Age":32, "Company":"IBM", "Engineer":true }, { "Name":"John", "Age":20, "Company":"Oracle", "Engineer":false }, { "Name":"Henry", "Age":45, "Company":"Microsoft", "Engineer":false } ] //读取其中John的公司名称 varjohnsCompany=members[1].Company; 示列3:{}中包含的[]使用 varconference={ "Conference":"FutureMarketing", "Date":"2012-6-1", "Address":"Beijing", "Members": [ { "Name":"Bob", "Age":32, "Company":"IBM", "Engineer":true }, { "Name":"John", "Age":20, "Company":"Oracle", "Engineer":false }, { "Name":"Henry", "Age":45, "Company":"Microsoft", "Engineer":false } ] } //读取参会者Henry是否工程师 varhenryIsAnEngineer=conference.Members[2].Engineer;
3.什么是JSONP
JSONP(JSONwithPadding)是资料格式JSON的一种“使用模式”,可以让网页从别的网域要资料。由于同源策略,一般来说位于server1.example.com的网页无法与不是server1.example.com的服务器沟通,而HTML的