JSON和JSONP的区别,以及使用方法

发布网友

我来回答

5个回答

懂视网

JSON 语法规则

在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:

对象表示为键值对

数据由逗号分隔

花括号保存对象

方括号保存数组

JSON 键/值对

JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值:

{"firstName": "Json"}

这很容易理解,等价于这条 JavaScript 语句。

{firstName : "Json"}

一、{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数。

如:var LangShen = {"Name":"Langshen","AGE":"28"};

上面声明了一个名为“LangShen”的对象,多个属性或函数用,(逗号)隔开,因为是对象的属性,

所以访问时,应该用.(点)来层层访问:LangShen.Name、LangShen.AGE,当然我们也可以用数组的方式来访问,如:LangShen["Name"]、LangShen["AGE"],结果是一样的。

该写法,在JSON数据结构中经常用,除此之外,我们平时写函数组的时候,也经常用到,如:

var LangShen = {
 Name = function(){
   return "LangShen";
   },
 Age = function(){
  return "28";
  }
}

调用方式差不多,因为是函数组,所以要加上(),如:alert( LangShen.Name() );

二、[ ]中括号,表示一个数组,也可以理解为一个数组对象。

如:var LangShen = [ "Name","LangShen","AGE","28" ];

很明显,每个值或函数,都是的,多个值之间只用,(逗号)隔开,因为是数组对象,所以它等于:

var LangShen = Array( "Name","LangShen","AGE","28" );

访问时,也是和数组一样,alert( LangShen[0] );

三、{ } 和[ ] 一起使用,我们前面说到,{ } 是一个对象,[ ] 是一个数组,我们可以组成一个对象数组,如:

var LangShen = { "Name":"Langshen",
 "MyWife":[ "LuLu","26" ],
 "MySon":[{"Name":"Son1"},{"Name":"Son2"},{"Name":"Son3"}] 
}

从上面的结构来看,是一个对象里面的第一项是个属性,第二项是一个数组,第三个是包含有多个对象的数组。调用起来,也是一层一层访问,对象的属性用.(点)叠加,数组用 [下标] 来访问。

热心网友

一、指代不同

1、JSON:是一种轻量级的数据交换格式。    

2、JSONP:是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。

二、特点不同

1、JSON:基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全于编程语言的文本格式来存储和表示数据。

2、JSONP:在客户端调用提供JSONP支持的URL Service,获取JSONP格式数据。


三、使用方法不同

1、JSON:简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

2、JSONP:Callback仅仅是JSONP的简单实现,可以根据具体需要实现更复杂的功能,比如可以在客户端动态集成更多的变量数据来完成分页功能。


参考资料来源:百度百科-jsonp

参考资料来源:百度百科-JSON

热心网友

1、区别如下:

(1)、定义不同

JSON是一种基于文本的数据交换方式(不支持跨域),而JSONP是一种非官方跨域数据交互协议。

(2)、核心不同

json的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本。

2、使用方法如下

(1)、json的使用方法:

$.getJSON( " http://跨域的dns/document!searchJSONResult.action?

name1="+value1+"&jsoncallback=?",    function(json){

   if(json.属性名==值){        // 执行代码}

});

(2)、json的使用方法:

$.ajax({    

async:false,    

url: http://跨域的dns/document!searchJSONResult.action,

type:"GET",    

dataType:'jsonp'

});

扩展资料:

JSONP的优缺点:

1、JSONP的优点

它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的*;它的兼容性更好,在更加古老的浏览器中都可以运行,不需要XMLHttpRequest或ActiveX的支持;并且在请求完毕后可以通过调用callback的方式回传结果。

2、JSONP的缺点

它只支持GET请求而不支持POST等其它类型的HTTP请求;它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。

热心网友

1、JSON和JSONP的区别如下:
JSON是一种数据交换格式,而JSONP是一种非官方跨域数据交互协议。形象比喻:JSON是地下党们用来书写和交换情报的暗号,而JSONP则是把用暗号书写的情报传递给自己同志时使用的接头方式。
JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符。
举例:
var person = {
"Name": "Bob",
"Age": 32,
"Company": "IBM",
"Engineer": true
}

jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本。
2、实现方式:
json就是一种数据交换格式,在js中定义成符合json语法的数据格式就可以了。

// 描述一次会议

var conference = {
"Conference": "Future Marketing",
"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
}
]
}

jsonp的实现需要定义调用接口以及回调方法:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
// 得到航班信息查询结果后的回调函数
var flightHandler = function(data){
alert('你查询的航班结果是:票价 ' + data.price + ' 元,' + '余票 ' + data.tickets + ' 张。');
};
// 提供jsonp服务的url地址(不管是什么类型的地址,最终生成的返回值都是一段javascript代码)
var url = "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998&callback=flightHandler";
// 创建script标签,设置其属性
var script = document.createElement('script');
script.setAttribute('src', url);
// 把script标签加入head,此时调用开始
document.getElementsByTagName('head')[0].appendChild(script);
</script>
</head>
<body>

</body>
</html>
</body>
</html>

热心网友

JSON是一种数据交换格式,而JSONP是JSON的一种使用模式,是基于JSON的
简单说就是JSON是协议,而JSONP是使用这种协议的一种方法

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com