2021年8月16日JSON

JSON: JavaScript Object Notation(JavaScript 对象表示法)

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

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

JSON 是轻量级的文本数据交换格式

JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHPJSP.NET)编程语言都支持JSON

JSON 具有自我描述性,更易理解

JSON 实例:

<h2>JavaScript 创建 JSON 对象</h2> 
<p> 网站名称: <span id="jname"></span><br /> 
网站地址: <span id="jurl"></span><br /> 
网站 slogan: <span id="jslogan"></span><br /> 
</p> <script>
var JSONObject= {
"name":"菜鸟教程", 
"url":"www.runoob.com", 
"slogan":"学的不仅是技术,更是梦想!"
 }; 
document.getElementById("jname").innerHTML=JSONObject.name 
document.getElementById("jurl").innerHTML=JSONObject.url 
document.getElementById("jslogan").innerHTML=JSONObject.slogan
</script> 

JSON 语法

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

数据在名称/值对中、数据由逗号分隔、大括号保存对象、中括号保存数组。

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

JSON 使用 JavaScript 语法创建对象数组

var sites = [ 
{ "name":"runoob" , "url":"www.runoob.com" }, 
{ "name":"google" , "url":"www.google.com" },
{ "name":"微博" , "url":"www.weibo.com" } 
];

JSON对象

JSON 对象使用在大括号({})中书写。

对象可以包含多个 key/value(键/值)对。

key 必须是字符串value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

key value 中使用冒号(:)分割。

每个 key/value 对使用逗号(,)分割。

你可以使用点号(.)来访问对象的值:

你也可以使用中括号([])来访问对象的值

var myObj, x;
myObj = { "name":"runoob", "alexa":10000, "site":null }; 
x = myObj.name;
Y = myObj["site"];

JSON数组

JSON 数组在中括号中书写。

JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

JavaScript 中,数组值可以是以上的 JSON 数据类型,也可以是 JavaScript 的表达式,包括函数,日期,及 undefined

对象属性的值可以是一个数组:

我们可以使用索引值来访问数组:

{ 
"name":"网站", 
"num":3, 
"sites":[ "Google", "Runoob", "Taobao" ] 
}
x = myObj.sites[0];

JSON.parse()

JSON 通常用于与服务端交换数据。

在接收服务器数据时一般是字符串。

我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。

例如我们从服务器接收了以下数据:

{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }

我们使用 JSON.parse() 方法处理以上数据,将其转换为 JavaScript 对象:

var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');

JSON.stringify()

JSON 通常用于与服务端交换数据。

在向服务器发送数据时一般是字符串。

我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。

例如我们向服务器发送以下数据:

var obj = { "name":"runoob", "alexa":10000, "site":"www.runoob.com"};

我们使用 JSON.stringify() 方法处理以上数据,将其转换为字符串:

var myJSON = JSON.stringify(obj);

JSNOP

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

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

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

如客户想访问 

https://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction

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

真正返回到客户端的数据显示为: callbackFunction(["customername1","customername2"])

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值