简单说一下 JSON和JSONP

JSON和JSONP,但从缩写看,可能会以为他们是很相似的两个名词,但他们除了缩写相似外,他们是两种类型的概念。

首先:

  JSONJavaScript Object Notation)即JavaScript对象表示法,是一种轻量级的数据交换格式,注意:JSON是数据格式,也就是用来保存数据用的,

  JSONP(JSON with Padding) 是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题,即是一种非官方跨域数据交互协议。

  举例说明:我们拿最近比较火的谍战片来打个比方,JSON是地下党们用来书写和交换情报的“暗号”,而JSONP则是把用暗号书写的情报传递给自己同志时使用的接头方式。看到没?一个是描述信息的格式,一个是信息传递双方约定的方法。

其次:这里单独说一些JSON

JSON的特点:

JSON 是存储和交换文本信息的语法。类似 XML。

JSON 比 XML 更小、更快,更易解析。

类似 XML

  • JSON 是纯文本
  • JSON 具有“自我描述性”(人类可读)
  • JSON 具有层级结构(值中存在值)
  • JSON 可通过 JavaScript 进行解析
  • JSON 数据可使用 AJAX 进行传输

相比 XML 的不同之处

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 能够使用内建的 JavaScript eval() 方法进行解析
  • 使用数组
  • 不使用保留字

JSON 语法规则

JSON 语法是 JavaScript 对象表示法语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

废话不多说,用一个简单的实例说明一下JSON的格式:

这里定义了多个朋友信息,数组名:goodfriends   ,包含三个对象(花括号的内容) ,每个对象又有三个属性(name,hobby,age)

var goodfriends=[
         { 
              "name" :"Tom",
              "hobby":"Running",    
             "age":24   
         },
         { 
              "name" :"John",
              "hobby":"laughing", 
             "age":19   
         },
         { 
              "name" :"Divid",
              "hobby":"Badminton", 
             "age":20   
         },   
]                        

 再次,介绍JSONP,前面说了,JSONP是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题,即是一种非官方跨域数据交互协议。

因为Ajax直接请求普通文件存在跨域文件没有权限访问的问题,由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通。而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。

原文地址:https://www.cnblogs.com/olive987/p/5793505.html