一、什么是JSON

1、JSON指的是JavaScript对象表示法(JavaScript Object Notation)。

2、JSON是轻量级的文本数据交换格式,比XML更小、更快、更易解析。

3、JSON独立于语言。

4、JSON具有自我描述性、更易理解。

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

二、JSON和XML比较

1、与XML相同之处

1)JSON是纯文本。

2)JSON具有“自我描述性”(人类可读)。

3)JSON具有层级结构(值中存在值)。

4)JSON可通过JavaScript进行解析。

5)JSON数据可使用AJAX进行传输。

2、与XML不同之处

1)没有结束标签。

2)比XML更短。

3)比XML读写的速度更快。

4)能够使用内建的JavaScript eval()方法进行解析。

5)可以使用数组。

6)不使用保留字。

3、为什么使用JSON

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

使用XML:

读取XML文档。

使用XML DOM来循环遍历文档。

读取值并存储在变量中。

使用JSON

读取JSON字符串。

用eval()处理JSON字符串。

三、JSON语法

JSON语法是JavaScript语法的子集。

1、语法规则

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

1)数据在名称/值对中。

2)数据由逗号分隔。

3)大括号保存对象。

4)中括号保存数组。

2、JSON名称/值对

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

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

  1. "name":"Tom"

3、JSON值

JSON值可以是:

1)数字(整数或浮点数)。

2)字符串(在双引号中)。

3)逻辑值(true或false)。

4)数组(在中括号中)。

5)对象(在大括号中)。

6)null。

4、JSON数字

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

  1. {"age":30}

5、JSON对象

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

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

  1. {"name":"张三","age":24}

6、JSON数组

JSON数组在中括号中书写:

数组可以包含多个对象:

  1. {
  2. "student":[
  3. {"name":"张三","age":24},
  4. {"name":"李四","age":25}
  5. ]
  6. }

在上面的例子中,对象"student"是包含三个对象的数组。每个对象代表一条关于某个学生(name,age)的记录。

7、JSON布尔值

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

  1. {"flag":true}

8、JSON null值

JSON可以设置null值:

  1. {"student":null}

9、JSON使用JavaScript语法

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

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

  1. var student=[
  2. {"name":"张三","age":24},
  3. {"name":"李四","age":25}
  4. ];

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

  1. student[0].name;

返回的内容是:

  1. 张三

可以像这样修改数据:

  1. student[0].name="tom";

10、JSON文件

1)JSON文件的文件类型是".json"。

2)JSON文本的MIME类型是"application/json"。

四、JSON对象

1、对象语法

  1. {"name":"张三","age":25}

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

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

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

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

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

2、访问对象

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

  1. var myObj,x;
  2. myObj={"name":"张三","age":24};
  3. x=myObj.name;

上面的例子输出值:张三。

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

  1. var myObj,x;
  2. myObj={"name":"张三","age":24};
  3. x=myObj["name"];

上面的例子同样输出值:张三。

3、循环对象

你可以使用for-in来循环对象的属性,使用中括号([])来访问属性的值:

  1. var myObj={"name":"张三","age":24};
  2. for(x in myObj){
  3. document.getElementById("demo").innerHTML += myObj[x]+"<br>";
  4. }

4、嵌套JSON对象

JSON对象中可以包含另外一个JSON对象:

  1. student={
  2. "name":"张三",
  3. "age":24,
  4. "score":{
  5. "C#高级编程":94,
  6. "SQL Server":83,
  7. "Python":75
  8. }
  9. }

你可以使用点号(.)或者中括号([])来访问嵌套的JSON对象。

例如:

  1. var x=student.score.C#高级编程;
  2. // 或者
  3. var x=student.score["C#高级编程"];

5、修改JSON对象的值

你可以使用点号(.)来修改JSON对象的值:

  1. student.score.C#高级编程=90;

你也可以使用中括号([])来修改JSON对象的值:

  1. student.score["C#高级编程"]=90

6、删除JSON对象的属性

我们可以使用delete关键字来删除JSON对象的属性:

  1. delete student.score.C#高级编程;

也可以使用中括号([])来删除JSON对象的属性:

  1. delete student.score["C#高级编程"];

五、JSON数组

1、数组作为JSON对象

  1. ["C#","Java","Python"]

JSON数组在中括号中书写。

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

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

2、JSON对象中的数组

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

  1. var student={
  2. "name":"张三",
  3. "age":24,
  4. "subject":[".NET","java","python"]
  5. }

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

  1. var x=student.subject[0];

3、循环数组

可以使用for-in来访问数组:

  1. for(i in student.subject) {
  2. x += student.subject[i]+"<br>";
  3. }

也可以使用for循环

  1. for(int i=0;i<student.subject.length;i++) {
  2. x+=student.subject[i]+"<br>";
  3. }

4、嵌套JSON对象中的数组

JSON对象中数组可以包含另外一个数组,或者另外一个JSON对象:

  1. student={
  2. "name":"张三"
  3. "age":24,
  4. "score":[
  5. {".NET":91},
  6. {"java":85},
  7. {"python":79}
  8. ]
  9. }

可以使用for-in来循环访问数组

  1. for(i in student.score) {
  2. x +="<h1>" +student.score[i]+"</h1>";
  3. }

5、修改数组值

可以使用索引值来修改数组值:

  1. student.score[1]=93;

6、删除数组元素

可以使用delete关键字来删除数组元素:

  1. delete student.score[0];

 

  

JSON教程的更多相关文章

  1. JSON 教程学习进度备忘

    书签:跳过:另外跳过的内容有待跟进 __________________ 学习资源:W3School. _________________ 跳过的内容: 1. ______________ 知识点:1 ...

  2. 最近想学Json,请问大家有没有什么好的Json教程介绍一下?

    最近想学json,请问大家有没有什么好的Json教程介绍一下? 最近学完java的框架了,想了解一下json,可是找不到相关视频,请大家有这方面的Json教程好资料就介绍下啦,最后有网址链接啦. {} ...

  3. JSON 教程首页

    JSON教程 JSON或JavaScript对象表示法是一个轻量级的基于文本的开放式标准,旨在为人类可读的数据交换. JSON格式最初是由Douglas Crockford规定,在RFC4627中描述 ...

  4. json教程系列(1)-使用json所要用到的jar包下载

    json是个非常重要的数据结构,在web开发中应用十分广泛.我觉得每个人都应该好好的去研究一下json的底层实现,基于这样的认识,金丝燕网推出了一个关于json的系列教程,分析一下json的相关内容, ...

  5. IBM开发者 JSON 教程

    在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式.掌握 Ajax 的这一期讨论另一种有用的数据格式 JavaScript Object Notation(JSON),以及如何 ...

  6. 一些JSON 教程

    JSON  以下内容来自W3school. JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. ...

  7. Web开发——JavaScript基础(JSON教程)

    参考: JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更 ...

  8. JSON教程基础

    一.基础简介 二.JSON 语法 三.JSON 使用 一.基础简介 1.JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本 ...

  9. 一些非常实用的JSON 教程

    以下内容来自W3school. JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 ...

随机推荐

  1. 【LeetCode】153. Find Minimum in Rotated Sorted Array (3 solutions)

    Find Minimum in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you ...

  2. Spring MVC POST中文乱码解决方案

    spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题,具体配置如下: ...

  3. oracle中的一些基本概念

    Oracle数据库的物理文件是存储在磁盘上的数据文件.控制文件和日志文件的总称.数据文件和日志文件是数据库中最重要的文件.数据库由若干个表空间组成,表空间由表组成,表由段组成,段由区间组成,区间由数据 ...

  4. api 和 C# 里的接口的区别?

    从狭义上讲,接口指的是借由 interface 定义的结构,接口中只对方法做定义,不做实现.具体实现由最终实现接口的类提供. interface 作为一种类型,可以用于定义方法,我们只关心类实现了接口 ...

  5. &lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第10章 | 充电时刻

    第10章 | 充电时刻 本章主要介绍模块及其工作机制 ------ 模块 >>> import math >>> math.sin(0) 0.0 模块是程序 一个简 ...

  6. Python atan() 函数

    描述 atan() 返回x的反正切弧度值. 语法 以下是 atan() 方法的语法: import math math.atan(x) 注意:atan()是不能直接访问的,需要导入 math 模块,然 ...

  7. Jpa 语法和 demo

    转 http://www.cnblogs.com/jiangxiaoyaoblog/p/5635152.html 参考资料   https://www.w3cschool.cn/java/jpa-qu ...

  8. MYSQL 更改数据库data存储目录 创建用户 创建权限 设置远程访问的权限.

    一. 怎么更改数据库data存储目录:  1. 安装MYSQL. 2. 切换到 C:\Program Files\MySQL\MySQL Server 5.6 3. 新建my.ini. 加入如下配置: ...

  9. Spring里的aop实现方式和源码分析

    使用"横切"技术,AOP把软件系统分为两个部分:核心关注点和横切关注点.业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点.横切关注点的一个特点是,他们经常发生在核心关 ...

  10. 为什么easyui的datagrid里getSelections还有getChecked只能获取一行值呢?

    http://jquery-easyui.wikidot.com/forum/t-280470 如果没有 idField属性,getSelections就只能获取一个行的值了 注意:如果用了前面说的& ...