当前位置: 首页>数据库>正文

JAVAscript json参数 javascript的json

JSON是用于存储和传输数据的格式,通常用于服务端向网页传递数据

什么是JSON?

JSON英文全称JavaScript Object

Notation(JavaScript对象表示法),是一种轻量级的用于存储和交换文本信息的语法,被设计用于可读的数据交换,类似XML,但比XML更小、更快,JSON具有自我描述性,更易理解

JSON简介

JSON是从JavaScript脚本语言中演变而来,使用Javascript语法来描述数据对象,文件名扩展是.json,但是JSON格式仅仅是一个文本,仍然独立于语言和平台。JSON解析器和JSON库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON

JSON使用范围

JSON格式可以用于通过网络连接序列化和传输结构化数据,用于编写基于JavaScript应用程序,包括浏览器扩展和网站。JSON主要用于在服务器和Web应用程序之间传输数据,Web服务和APIs可以使用JSON格式提供公用数据,还可以用于现代编程语言中

JSON语法

JSON的语法基本上可以视为JavaScript语法的一个子集,包括以下内容:

数据使用名/值对表示

使用大括号保存对象,每个名称后面跟着一个':'(冒号),名/值对使用,(逗号)分割

使用方括号保存数组,数组值使用,(逗号)分割

{
"book": [
{
"id":"01",
"language":"Java",
"edition":"third",
"author": "HerbertSchildt"
},
{
"id":"07",
"language":"C++",
"edition":"second"
"author":"E.Balagurusamy"
}]
}

JSON支持以下两种数据结构:

名/值对集合: 这一数据结构由不同的编程语言支持

有序的值列表: 包括数组,列表,向量或序列等等

JSON语法规则

JSON语法是JavaScript对象语法的子集

数据在名称/值对中

数据由逗号分隔

花括号保存对象

方括号保存数组

JSON名称/值对

JSON数据的书写格式是:名称/值对

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

{"firstName":"John","lastName":"Doe"}

等价于这条JavaScript语句:

firstName = "John", lastName ="Doe"}

JSON

JSON值可以是:

数字(整数或浮点数)

字符串(在双引号中)

逻辑值(true或false)

数组(在方括号中)

对象(在花括号中)

null

JSON对象

JSON对象在花括号中书写,对象可以包含多个名称/值对

JSON数组

JSON数组在方括号中书写,数组可包含多个对象

"employees":[
{"firstName":"John","lastName":"Doe"},
{"firstName":"Anna","lastName":"Smith"},
{"firstName":"Peter","lastName":"Jones"}
]

JSON使用JavaScript语法

因为JSON使用JavaScript语法,所以无需额外的软件就能处理JavaScript中的JSON。JavaScript程序使用内建的eval()函数,用JSON数据来生成原生的JavaScript对象。

通过JavaScript,您可以创建一个对象数组,并像上面代码那样赋值。然后像这样访问JavaScript对象数组中的第一项

employees[0].lastName;

返回的内容是:

Doe

也可以像这样修改数据:

employees[0].firstName= "Jonatan";

JSON文件

JSON文件的文件类型是".json"

JSON文本的MIME类型是"application/json"

JSON使用

把JSON文本转换为JavaScript对象

JSON最常见的用法之一,是从web服务器上读取JSON数据(作为文件或作为HttpRequest),将JSON数据转换为JavaScript对象,然后在网页中使用该数据。

简单起见,我们直接设置JSON字符串:

首先,创建JavaScript字符串,字符传为JSON格式的数据:

var text = '{"employees" : [' +
'{"firstName":"John" , "lastName":"Doe"},' +
'{"firstName":"Anna" , "lastName":"Smith"},' +
'{"firstName":"Peter" ,"lastName":"Jones" } ]}';

由于JSON语法是JavaScript语法的子集,JavaScript函数eval()可用于将JSON文本转换为JavaScript对象

eval()函数使用的是JavaScript编译器,可解析JSON文本,然后生成JavaScript对象。必须把文本包围在括号中,这样才能避免语法错误:

var obj = eval("(" + txt +")");

在网页中使用JavaScript对象:

First Name: 
Last Name: 
document.getElementById("fname").innerHTML =obj.employees[1].firstName
document.getElementById("lname").innerHTML =obj.employees[1].lastName

JSON解析器

eval()函数可编译并执行任何JavaScript代码,这隐藏了一个潜在的安全问题。使用JSON解析器将JSON转换为JavaScript对象是更安全的做法。JSON解析器只能识别JSON文本,而不会编译脚本。在浏览器中,提供了原生的JSON支持,而且JSON解析器的速度更快。较新的浏览器和最新的ECMAScript

(JavaScript)标准中均包含了原生的对JSON的支持

JSONP教程

Jsonp(JSON with Padding)是json的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据

为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略。

同源策略,是由Netscape提出的一个著名的安全策略,现在所有支持JavaScript的浏览器都会使用这个策略

JSONP应用

服务端JSONP格式数据

如客户想访问:

/try/ajax/jsonp.php?jsonp=callbackFunction,

假设客户期望返回JSON数据:["customername1","customername2"]。

真正返回到客户端的数据显示为:

callbackFunction(["customername1","customername2"])。

服务端文件jsonp.php代码为:

header('Content-type: application/json');//获取回调函数名
$jsoncallback = htmlspecialchars($_REQUEST['jsoncallback']); //json数据$json_data ='["customername1","customername2"]'; //输出jsonp格式的数据echo$jsoncallback . "(" . $json_data. ")";
?>

客户端实现callbackFunction函数

functiononCustomerLoaded(result, methodName){
var html = '
 
 '; 
 
for(var i = 0; i < result.length;i++){
html += '
 
 ' + result[i] +' 
 '; 
 
}
html += '';
document.getElementById('divCustomers').innerHTML= html;
}

以上代码可以使用jQuery代码实现:

$.getJSON("/try/ajax/jsonp.php?jsoncallback=?",function(data) {
var html = '
 
 '; 
 
for(var i = 0; i < data.length; i++){
html += '
 
 ' + data[i] +' 
 '; 
 
}
html += '';
$('#divCustomers').html(html);
});

https://www.xamrdz.com/database/6tg1960517.html

相关文章: