JSON 教程 json入门学习笔记


Posted in Javascript onSeptember 22, 2020

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

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

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

JSON 实例

{
 "sites": [
 { "name":"三水点靠木" , "url":"3water.com" }, 
 { "name":"google" , "url":"www.google.com" }, 
 { "name":"微博" , "url":"www.weibo.com" }
 ]
}

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

什么是 JSON ?

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

由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。

在线实例

通过我们的编辑器,您可以在线编辑 JavaScript 代码,然后通过点击一个按钮来查看结果:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>三水点靠木(3water.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":"三水点靠木",
 "url":"3water.com", 
 "slogan":"学的不仅是技术,更是梦想!"
};
document.getElementById("jname").innerHTML=JSONObject.name 
document.getElementById("jurl").innerHTML=JSONObject.url 
document.getElementById("jslogan").innerHTML=JSONObject.slogan
</script> 
</body>
</html>

与 XML 相同之处

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

与 XML 不同之处

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

为什么使用 JSON?

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

使用 XML
读取 XML 文档
使用 XML DOM 来循环遍历文档
读取值并存储在变量中
使用 JSON
读取 JSON 字符串
用 eval() 处理 JSON 字符串

JSON 语法

JSON 语法是 JavaScript 语法的子集。

JSON 语法规则

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

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

JSON 名称/值对

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

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

"name" : "三水点靠木"

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

name = "三水点靠木"

JSON 值

JSON 值可以是:

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

JSON 数字

JSON 数字可以是整型或者浮点型:

{ "age":30 }

JSON 对象

JSON 对象在大括号({})中书写:

对象可以包含多个名称/值对:

{ "name":"三水点靠木" , "url":"3water.com" }

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

name = "三水点靠木"
url = "3water.com"

JSON 数组

JSON 数组在中括号中书写:

数组可包含多个对象:

{
"sites": [
{ "name":"三水点靠木" , "url":"3water.com" },
{ "name":"google" , "url":"www.google.com" },
{ "name":"微博" , "url":"www.weibo.com" }
]
}

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

JSON 布尔值

JSON 布尔值可以是 true 或者 false:

{ "flag":true }

JSON null

JSON 可以设置 null 值:

{ "3water":null }

JSON 使用 JavaScript 语法

因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。

通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:

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

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

sites[0].name;

返回的内容是:

3water

可以像这样修改数据:

sites[0].name="三水点靠木";

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>三水点靠木(3water.com)</title>
</head>
<body>
<h2>JavaScript 创建 JSON 对象</h2>
<p>第一个网站名称: <span id="name1"></span></p> 
<p>第一个网站修改后的名称: <span id="name2"></span></p> 

<script>
var sites = [
	{ "name":"3water" , "url":"www.3water.com" }, 
	{ "name":"google" , "url":"www.google.com" }, 
	{ "name":"微博" , "url":"www.weibo.com" }
];

document.getElementById("name1").innerHTML=sites[0].name;
// 修改网站名称
sites[0].name="三水点靠木";
document.getElementById("name2").innerHTML=sites[0].name;
</script>

</body>
</html>

在下面的章节,您将学到如何把 JSON 文本转换为 JavaScript 对象。

JSON 文件

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

JSON vs XML

JSON 和 XML 都用于接收 web 服务端的数据。

JSON 和 XML在写法上有所不同,如下所示:

JSON 实例

{
    "sites": [
    { "name":"三水点靠木" , "url":"www.3water.com" },
    { "name":"google" , "url":"www.google.com" },
    { "name":"微博" , "url":"www.weibo.com" }
    ]
}

XML 实例

<sites>
 <site>
  <name>三水点靠木</name> <url>www.3water.com</url>
 </site>
 <site>
  <name>google</name> <url>www.google.com</url>
 </site>
 <site>
  <name>微博</name> <url>www.weibo.com</url>
 </site>
</sites>

JSON 与 XML 的相同之处:

JSON 和 XML 数据都是 "自我描述" ,都易于理解。
JSON 和 XML 数据都是有层次的结构
JSON 和 XML 数据可以被大多数编程语言使用
JSON 与 XML 的不同之处:
JSON 不需要结束标签
JSON 更加简短
JSON 读写速度更快
JSON 可以使用数组
最大的不同是:XML 需要使用 XML 解析器来解析,JSON 可以使用标准的 JavaScript 函数来解析。

JSON.parse(): 将一个 JSON 字符串转换为 JavaScript 对象。
JSON.stringify(): 于将 JavaScript 值转换为 JSON 字符串。

为什么 JSON 比 XML 更好?

XML 比 JSON 更难解析。

JSON 可以直接使用现有的 JavaScript 对象解析。

针对 AJAX 应用,JSON 比 XML 数据加载更快,而且更简单:

使用 XML

获取 XML 文档
使用 XML DOM 迭代循环文档
接数据解析出来复制给变量

使用 JSON

获取 JSON 字符串
JSON.Parse 解析 JSON 字符串

Json介绍:

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。
      json 官方网站 http://www.json.org/
      json.net 下载地址 http://json.codeplex.com/releases/view/37810

Demo:

JSON 教程 json入门学习笔记

描述:

点击获取按钮后,将请求页面,获取json数据,填充到表格

html代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
<script type="text/jscript" src="../jquery/jquery-1.4.2.min.js"></script> 
<script language="javascript" type="text/javascript"> 
$(function() { 
$("#Button1").click(function() { 
$.get("json1.aspx?m=m", null, function(callbackmsg) { 
var product = eval(callbackmsg); 
ShowProduct(product) 
}) 
}); 
}) 
function ShowProduct(callbackmsg) { 
var row=''; 
for (var u in callbackmsg) { 
var len = callbackmsg[u].length; 
row += '<tr>'; 
row += '<td>' + callbackmsg[u].Name + '</td>'; 
row += '<td>' + callbackmsg[u].Price + '</a></td>'; 
row += '<td>' + callbackmsg[u].Size + '</td>'; 
row += '</tr>'; 
} 
$("#body").html(row); 
} 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<input id="Button1" type="button" value="获取" /> 
</div> 
<table> 
<thead> 
<tr> 
<th> 
名称 
</th> 
<th> 
价格 
</th> 
<th> 
大小 
</th> 
</tr> 
</thead> 
<tbody id="body"> 
</tbody> 
</table> 
</form> 
</body> 
</html>

后台代码:

public partial class json1 : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
if (HttpContext.Current.Request.QueryString["m"] != null) 
{ 
List<Product> Products = new List<Product>(); 
Products.Add(new Product() { Name = "笔记本", Price = "4.2", Size = "30x50" }); 
Products.Add(new Product() { Name = "尺子", Price = "1.2", Size = "30x50" }); 
Products.Add(new Product() { Name = "书", Price = "36", Size = "30x50" }); 
Products.Add(new Product() { Name = "钢笔", Price = "6.0", Size = "30x50" }); 
Products.Add(new Product() { Name = "铅笔", Price = "2.2", Size = "30x50" }); 
string json = JsonConvert.SerializeObject(Products); 
Response.Write(json); 
Response.End(); 
} 
} 
} 
public class Product 
{ 
public string Name { get; set; } 
public string Size { get; set; } 
public string Price { get; set; } 
}

知识点:

1.json官方提供了用于.net操作的dll类库,JsonConvert.SerializeObject将.net对象序列化为json。

2.Javascript读取json对象var product = eval(callbackmsg)。

3.Javascript读取json值callbackmsg[u].Name。

Javascript 相关文章推荐
js可突破windows弹退效果代码
Aug 09 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
Dec 07 Javascript
javascript中apply和call方法的作用及区别说明
Feb 14 Javascript
理解javascript中的回调函数(callback)
Sep 02 Javascript
jQuery读取XML文件内容的方法
Mar 09 Javascript
Bootstrap基础学习
Jun 16 Javascript
详解javascript数组去重问题
Nov 06 Javascript
基于AngularJS+HTML+Groovy实现登录功能
Feb 17 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
Nov 25 Javascript
axios基本入门用法教程
Mar 25 Javascript
关于Angularjs中跨域设置白名单问题
Apr 17 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
Apr 10 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
Apr 09 #Javascript
javaScript call 函数的用法说明
Apr 09 #Javascript
javascript 自动填写表单的实现方法
Apr 09 #Javascript
Extjs入门之动态加载树代码
Apr 09 #Javascript
JS 非图片动态loading效果实现代码
Apr 09 #Javascript
extJs 下拉框联动实现代码
Apr 09 #Javascript
禁止js文件缓存的代码
Apr 09 #Javascript
You might like
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
javascript 浏览器检测代码精简版
2010/03/04 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
原生JS轮播图插件
2017/02/09 Javascript
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
python聊天程序实例代码分享
2013/11/18 Python
python解析文件示例
2014/01/23 Python
深入浅析python中的多进程、多线程、协程
2016/06/22 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
python正则-re的用法详解
2019/07/28 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
Python代码一键转Jar包及Java调用Python新姿势
2020/03/10 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
小学教师学期末自我评价
2013/09/25 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
中班下学期个人总结
2015/02/12 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers