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 相关文章推荐
JavaScript实现从数组中选出和等于固定值的n个数
Sep 03 Javascript
javascript实现简单的页面右下角提示信息框
Jul 31 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
Jul 12 Javascript
jQuery中fadein与fadeout方法用法示例
Sep 16 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
Jan 09 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
Jan 13 Javascript
vue中使用cropperjs的方法
Mar 01 Javascript
基于element-ui的rules中正则表达式
Sep 04 Javascript
JavaScript惰性求值的一种实现方法示例
Jan 11 Javascript
15分钟深入了解JS继承分类、原理与用法
Jan 19 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
Feb 28 jQuery
javascript中的相等操作符(==与===区别)
Dec 21 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采集相关教程之一 CURL函数库
2010/02/15 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
php生成唯一数字id的方法汇总
2015/11/18 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
jQuery实现行文字链接提示效果的方法
2015/03/10 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
jquery中为什么能用$操作
2019/06/18 jQuery
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
Python列表切片常用操作实例解析
2020/03/10 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
css3中transition属性详解
2014/09/02 HTML / CSS
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
会计的岗位职责
2014/03/15 职场文书
2014年三万活动总结
2014/04/26 职场文书
2015年店长个人工作总结
2015/10/23 职场文书
详解运行Python的神器Jupyter Notebook
2021/06/03 Python
解析Java中的static关键字
2021/06/14 Java/Android