JSON教程
关注公众号
获取最新福利
微信公众号

JSON教程

时间: 03/11/2017作者: cll浏览量: 1247

1. JSON 教程

JSON教程 JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析。 JSON实例

"sites": [
{ "name":"geekjc" , "url":"www.geekjc.com" }, 
{ "name":"google" , "url":"www.google.com" }, 
{ "name":"微博" , "url":"http://weibo.com/xyly66" }
]
}

这个 sites 对象是包含 3 个站点记录(对象)的数组。

1.1 什么是JSON?

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言 *
  • JSON 具有自我描述性,更易理解
  • JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。

1.2 JSON-转换为JavaScript对象

JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。 由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。

2. JSON 简介

JSON-简介

2.1 实例

创建文件index.html,复制如下代码,保存,在浏览器查看效果:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>geekjc(geekjc.com)</title>
</head>
<body>
<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":"geekjc",
    "url":"www.geekjc.com", 
    "slogan":"学习点滴,汇聚成江"
};
document.getElementById("jname").innerHTML=JSONObject.name 
document.getElementById("jurl").innerHTML=JSONObject.url 
document.getElementById("jslogan").innerHTML=JSONObject.slogan
</script>

</body>
</html>

2.2 与XML相同之处

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

2.3 与XML不同之处

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

2.4 为什么使用 JSON?

对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

使用XML

  • 读取 XML 文档
  • 使用 XML DOM 来循环遍历文档
  • 读取值并存储在变量中

使用JSON

  • 读取 JSON 字符串
  • 用 eval() 处理 JSON 字符串

3. JSON 语法

JSON语法 JSON 语法是 JavaScript 语法的子集。

3.1 JSON 语法规则

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

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

3.2 JSON 名称/值对

JSON 数据的书写格式是:名称/值对。 名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

"name":"geekjc"

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

name="极客教程"

3.3 JSON 值

JSON 值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

3.4 JSON 对象

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

{ "name":"geekjc" , "url":"www.geekjc.com" }

这一点也容易理解,与这条 JavaScript 语句等价:

name = "geekjc"
url = "www.geekjc.com"

3.5 JSON 数组

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

{
"sites": [
{ "name":"geekjc" , "url":"www.geekjc.com" }, 
{ "name":"google" , "url":"www.google.com" }, 
{ "name":"微博" , "url":"http://weibo.com/xyly66" }
]
}

在上面的例子中,对象 "sites" 是包含三个对象的数组。每个对象代表一条关于某个网站(name、url)的记录。

3.6 JSON javascript语法

因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。 通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:

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

可以像这样访问 JavaScript 对象数组中的第一项(索引从 0 开始):

sites[0].name;

返回的内容是:

geekjc

可以像这样修改数据:

sites[0].name="学习点滴";

3.7 JSON 文件

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

4. JSON 使用

JSON使用 把 JSON 文本转换为 JavaScript 对象: JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。 为了更简单地为您讲解,我们使用字符串作为输入进行演示(而不是文件)。

4.1 JSON 实例

创建包含 JSON 语法的 JavaScript 字符串:

var txt = '{ "sites" : [' +
'{ "name":"geekjc" , "url":"www.geekjc.com" },' +
'{ "name":"google" , "url":"www.google.com" },' +
'{ "name":"微博" , "url":"http://weibo.com/xyly66" } ]}';

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

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

在网页中使用 JavaScript 对象:

var txt = '{ "sites" : [' +
'{ "name":"geekjc" , "url":"www.geekjc.com" },' +
'{ "name":"google" , "url":"www.google.com" },' +
'{ "name":"微博" , "url":"http://weibo.com/xyly66" } ]}';

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

document.getElementById("name").innerHTML=obj.sites[0].name 
document.getElementById("url").innerHTML=obj.sites[0].url

4.2 JSON 解析器

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

  • Firefox (Mozilla) 3.5
  • Internet Explorer 8
  • Chrome
  • Opera 10
  • Safari 4

Web软件支持

  • jQuery
  • Yahoo UI
  • Prototype
  • Dojo
  • ECMAScript 1.5

对于较老的浏览器,可使用 JavaScript 库: https://github.com/douglascrockford/JSON-js JSON 格式最初是 originally specified by Douglas Crockford

5. JSONP 教程

JSONP教程 本章节我们将向大家介绍 JSONP 的知识。 Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。 为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略。 同源策略,它是由Netscape提出的一个著名的安全策略,现在所有支持JavaScript 的浏览器都会使用这个策略。

5.1 JSONP 应用

1. 服务端JSONP格式数据

如客户想访问 : http://www.geekjc.com/demo/ajax/jsonp.php?jsonp=callbackFunction。 假设客户期望返回JSON数据:["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 . ")";
?>
2. 客户端实现 callbackFunction 函数
<script type="text/javascript">
function callbackFunction(result, methodName)
{
    var html = '<ul>';
    for(var i = 0; i < result.length; i++)
    {
        html += '<li>' + result[i] + '</li>';
    }
    html += '</ul>';
    document.getElementById('divCustomers').innerHTML = html;
}
</script>

页面展示

<div id="divCustomers"></div>

客户端页面完整代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JSONP 实例</title>
</head>
<body>
    <div id="divCustomers"></div>
    <script type="text/javascript">
function callbackFunction(result, methodName)
        {
            var html = '<ul>';
            for(var i = 0; i < result.length; i++)
            {
                html += '<li>' + result[i] + '</li>';
            }
            html += '</ul>';
            document.getElementById('divCustomers').innerHTML = html;
        }
</script>
<script type="text/javascript" src="http://www.geekjc.com/demo/ajax/jsonp.php?jsoncallback=callbackFunction"></script>
</body>
</html>

5.2 jQuery使用JSONP

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

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>JSONP 实例</title>
   <script src="//cdn.bootcss.com/jquery/3.1.1/jquery.js"></script>    
</head>
<body>
<div id="divCustomers"></div>
<script>
$.getJSON("http://www.geekjc.com/demo/ajax/jsonp.php?jsoncallback=?", function(data) {

    var html = '<ul>';
    for(var i = 0; i < data.length; i++)
    {
        html += '<li>' + data[i] + '</li>';
    }
    html += '</ul>';

    $('#divCustomers').html(html); 
});
</script>
</body>
</html>
极客教程网
——一个你值得来的网站
编程笔记:学习分享,与君共勉!
轮子库:介绍各种库、插件的用途
在线工具:极客工具,在线工具,在线运行
前端导航:前端导航,前端资源聚合平台
分享
QQ群:
495489065

Copyright © 2017 - ~ All Rights Reserved. Made By Snow 备案号:粤ICP备15001588号-4