零基础学做网站培训介绍

当前位置:

什么是JSON数据

以下为学做网站论坛关于“什么是JSON数据”讲解视频教程。

JSON数据是微信小程序中传输数据的一种格式。
例如小程序在获取商品信息时,商品信息中有很多的信息,如商品名,商品价格,商品规格等等,这些数据从服务器里传给小程序来显示,就是通过JSON格式数据来传输。
1. 什么是 JSON
JSON概念很简单,JSON 是一种轻量级的数据格式,他基于 javascript 语法的子集,即数组和对象表示。由于使用的是 javascript 语法,因此JSON 定义可以包含在javascript 文件中,对其的访问无需通过基于 XML 的语言来额外解析。不过在使用 JSON 之前,很重要的一点是理解 javascript 中数组及对象字面量的特殊语法。
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。
那么,JSON到底是什么?
JSON就是一串字符串 只不过元素会使用特定的符号标注。
{} 双括号表示对象
[] 中括号表示数组
"" 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象
而[{"name": "Michael"},{"name": "Jerry"}]就表示包含两个对象的数组
当然了,你也可以使用{"name":["Michael","Jerry"]}来简化上面一部,这是一个拥有一个name数组的对象
1.1 数组字面量
数组字面量,是用一对方括号括起一组用逗号隔开的 javascript 值,例如:
var aNames=["hello", 12, true , null];
1.2 对象字面量
对象字面量,是通过两个花括号来定义的。在花括号内可以放置任意数量的“名称-值”对,定义格 式字符串值”。除了最后一行外,每个“名称-值”对后必须有一个逗号(这与Perl 中的联合数组的定义有些类似)。例如:


var oCar = {
"color": "red",
"doors" : 4,
"paidFor" : true
};

1.3 JSON 语法
在Ajax应用中,就是服务器直接生成javascript语句,客户端获取后直接用eval方法来获得这个对象,这样就可以省去解析XML的性能损失。 同时,在javascript 通信中使用JSON作为数据格式的好处很明星,可以立即获得数据的值,因此可以更快的访问其中包含的数据。


var oCarInfo = eval("(" + sJSON + ")");

请记住:在javascript中花括号也是一个语句。要让解析器知道这个花括号表示的是一个对象而非一个语句的唯一方法是能否找到封装它的圆括号 (它是用来说明代码是一个表达式而非一个语句)。
JSON 的两种结构:
1)键值对形式,即Name-Value对的结构结构集合(无序的 )。如:{name1:value1.name2:value2,...};
{"name":"小明","age":"12"}
2)Array(有序的):一组有序的数据列表。例如:[value1,value2,value3,.....],其中,值可以是双引号引起来的字符串(string)、数值(number)、true、false、null、对象(object)或者数组(Array),这些结构都是可以嵌套的。如:
例一:对象中可以包含数组


{"root":[{"id":"001","name":"小红"}{"id":"002","name":"小明"}{"id":"003","name":"小丽"}],"total":3,"success":true}

例二:也可以对象嵌套子对象,子对象再嵌套数组:


"memberList":{"lists":[{"id":"001","name":"小红"},{"id":"002","name":"小明"}{"id":"003","name":"小丽"}]}

例三:数组中可以包含对象:


[{"id":"001","name":"小红"}{"id":"002","name":"小明"}{"id":"003","name":"小丽"},........]

1.4 JSON 编码和解码
作为 JSON 资源的一部分,Corockford 开发了一个能够实现 JSON 和Javascript 对象直接解码和编码的工具。这个工具的源程序可以在 www.crockford.com/JSON/json.js 中下载。
在上面提出用到eval() 存在些固有的不足:它是用来对传入的任意 Javascript 代码求值的,而不仅仅针对JSON。因此,当涉及企业级 web 应用程序开发时,它存在很大的安全隐患。为了解决这个问题,可以使用只用来将 JSON 代码转换为 Javascript 的解析器 JSON.parse() 方法来实现。例如:


var oObject = JSON.parse (sJSON);

同时,它也提供了一种将 Javascript 对象转换为 JSON 字符串(数据传输时使用的)的工具(在Javascript 中没有内建这种功能支持)。你要做的只是将对象传入到 JSON.Stringify() 方法。请看下面的例子:


var oCar = new Object();
oCar.doors = 4;
oCar.color = "blue";
oCar.year = 1995;
oCar.drivers = new Array("Penny", "Dan" , "Kris");
document.write(JSON.stringify(oCar));

这段代码将输出如下所示的JSON 字符串:


{"doors" : 4, "color" : "blue", "year" :1995, "drivers" : ["Penny", "Dan" , "Kris"]}

2. JSON 与 XML区别
正如上面所说,JSON 与 XML 相比的一大优点就是它更加简单。
请看 XML 数据表示实例:
使用XML表示:


<comments>
<comment>
<id>1</id>
<author>someone1</author>
<url>http://someone1.x2design.net</url>
<content>hello</content>
</comment>
<comment>
<id>2</id>
<author>someone2</author>
<url>http://someone2.x2design.net</url>
<content>someone1</content>
</comment>
<comment>
<id>3</id>
<author>someone3</author>
<url>http://someone3.x2design.net</url>
<content>hello</content>
</comment>
</comments>

使用JSON表示:


{comments:[
{
id:1,
author:"someone1",
url:"http://someone1.x2design.net",
content:"hello"
},
{
id:2,
author:"someone2",
url:"http://someone2.x2design.net",
content:"hello"
},
{
id:3,
author:"someone3",
url:"http://someone3.x2design.net",
content:"hello"
}
]};

很容易发现,许多冗余的信息不见了。由于不需要有与开始标签(opening tag)匹配的结束标签(closing tag),因此传送相同的信息所需的字节数大大降低了。创始人 Corockford 将其称之为“XML 的减肥方案”)。
JSON 格式的数据与 XML 相比,缺点是对于外行人可读性更差。当然,有一种观点是,数据交换格式不是用肉眼观察的。如果是通过工具对来回传送的数据进行创建和解析,那么的确没有理 由要求数据必须使人们易于阅读。问题的实质在于:存在可用的 JSON 工具。
3. 服务器端 JSON 工具
java :java JSON 工具,由 Douglas Crock ford 开发,可在 www.crockford.com/JSON/java/
中下载,它可以在 JSP 中使用。
4. JSON 优势与缺点
JSON不仅减少了解析XML解析带来的性能问题和兼容性问题,而且对于javascript来说特别容易使用,可以方便的通过遍历数组以及访问对象属性 来获取数据,其可读性也不错,基本具备了结构化数据的性质。不得不说是一个很好的办法,而且事实上google maps就没有采用XML传递数据,而是采用了JSON方案。
JSON 另外一个优势是跨域可行性,例如你在www.xxx.com的 网页里使用是都可行的,这就意味着你可以跨域传递信息。而使用XMLHttpRequest却获取不了跨域的信息,这是javascript内部的安全 性质所限制的。
JSON看上去很美,是不是就能都取代XML呢?事实并非如此,而原因就在于XML的优势:通用性。要使服务器端产生语法合格的javascript代 码并不是很容易做到的,这主要发生在比较庞大的系统,服务器端和客户端有不同的开发人员。它们必须协商对象的格式,这很容易造成错误。


JSON.parse(jsonstr); //可以将json字符串转换成json对象
JSON.stringify(jsonobj); //可以将json对象转换成json自符串

js重新刷新本页面:window.location.reload();

发表评论

邮箱地址不会被公开。 必填项已用*标注

相关教程

  • 我们如果想做一个资源共享的网站,就离不开json,通过API接口来读取JSON数据信息。那么对于PHP程序开发的网站,PHP怎么通过API接口读取JSON数据呢?
  • 什么是JSON数据 (1290 次浏览)
    JSON数据是微信小程序中传输数据的一种格式。例如小程序在获取商品信息时,商品信息中有很多的信息,如商品名,商品价格,商品规格等等,这些数据从
  • 页面JSON是页面的配置文件,可以单独配置当前页面。 页面JSON文件重要性高于全局配置文件app.json新建页面新建页面pages 手动创建①右击[pa
  • WordPress使用MySQL数据库。作为一个开发者,我们有必要掌握WordPress数据库的基本构造,并在自己的插件或主题中使用他们。截至WordPress3.0,WordP
  • 很多朋友安装xampp之后,启用服务器或者数据库失败,发现端口已经被占用。因为每台电脑占用端口的软件不一样,要如何解决这个问题。第一种解决方
  • 在之前的教程中,教大家如何在在电脑搭建PHP+MYSQL本地环境,并安装wordpress程序建立wordpress网站。一些学习怎么建网站的学员都反映一个问题,就
  • MySQL数据表中的数据类型,它可以被分为3类:数字类型、日期和时间类型、字符串(字符)类型。由MySQL支持的列类型列在下面。下列代码字母用于描述
  • 插件介绍每天互联网上有以亿计的网站新内容产生,如何让百度知道自己做网站产生的新网页内容呢,就可以在做网站时安装一个百度结构化数据插件。