一、什么是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数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
"name":"tom"
3、json值
json值可以是:
- 1)数字(整数或浮点数)。
- 2)字符串(在双引号中)。
- 3)逻辑值(true或false)。
- 4)数组(在中括号中)。
- 5)对象(在大括号中)。
- 6)null。
4、json数字
json数字可以是整型或者浮点型:
{"age":30}
5、json对象
json对象在大括号({})中书写:
对象可以包含多个名称/值对:
{"name":"张三","age":24}
6、json数组
json数组在中括号中书写:
数组可以包含多个对象:
{ "student":[ {"name":"张三","age":24}, {"name":"李四","age":25} ] }
在上面的例子中,对象"student"是包含三个对象的数组。每个对象代表一条关于某个学生(name,age)的记录。
7、json布尔值
json布尔值可以是true或者false:
{"flag":true}
8、json null值
json可以设置null值:
{"student":null}
9、json使用javascript语法
因为json使用javascript语法,所以无需额外的软件就能处理javascript中的json。
通过javascript,你可以创建一个对象数组,并像这样进行赋值:
var student=[ {"name":"张三","age":24}, {"name":"李四","age":25} ];
可以像这样访问javascript对象数组中的第一项(索引从0开始)
student[0].name;
返回的内容是:张三
可以像这样修改数据:
student[0].name="tom";
10、json文件
- 1)json文件的文件类型是".json"。
- 2)json文本的mime类型是"application/json"。
四、json对象
1、对象语法
{"name":"张三","age":25}
json对象使用在大括号({})中书写。
对象可以包含多个key/value(键/值)对。
key必须是字符串,value可以是合法的json数据类型(字符串、数字、对象、数组、布尔值或null)。
key和value中使用冒号(:)分割。
每个key/value对使用逗号(,)分割。
2、访问对象
你可以使用点(.)来访问对象的值。
var myobj,x; myobj={"name":"张三","age":24}; x=myobj.name;
上面的例子输出值:张三。
你也可以使用中括号([])来访问对象的值。
var myobj,x; myobj={"name":"张三","age":24}; x=myobj["name"];
上面的例子同样输出值:张三。
3、循环对象
你可以使用for-in来循环对象的属性,使用中括号([])来访问属性的值:
var myobj={"name":"张三","age":24}; for(x in myobj){ document.getelementbyid("demo").innerhtml += myobj[x]+"<br>"; }
4、嵌套json对象
json对象中可以包含另外一个json对象:
student={ "name":"张三", "age":24, "score":{ "c#高级编程":94, "sql server":83, "python":75 } }
你可以使用点号(.)或者中括号([])来访问嵌套的json对象。
例如:
var x=student.score.c#高级编程; // 或者 var x=student.score["c#高级编程"];
5、修改json对象的值
你可以使用点号(.)来修改json对象的值:
student.score.c#高级编程=90;
你也可以使用中括号([])来修改json对象的值:
student.score["c#高级编程"]=90;
6、删除json对象的属性
我们可以使用delete关键字来删除json对象的属性:
delete student.score.c#高级编程;
也可以使用中括号([])来删除json对象的属性:
delete student.score["c#高级编程"];
五、json数组
1、数组作为json对象
["c#","java","python"]
json数组在中括号中书写。
json中数组值必须是合法的json数据类型(数字、字符串、对象、数组、布尔值或null)。
javascript中,数组值可以是以上的json数据类型,也可以是javascript的表达式,包括函数、日期、及undefined。
2、json对象中的数组
对象属性的值可以是一个数组:
var student={ "name":"张三", "age":24, "subject":[".net","java","python"] }
可以使用索引值来访问数组:
var x=student.subject[0];
3、循环数组
可以使用for-in来访问数组:
for(i in student.subject) { x += student.subject[i]+"<br>"; }
也可以使用for循环
for(int i=0;i<student.subject.length;i++) { x+=student.subject[i]+"<br>"; }
4、嵌套json对象中的数组
json对象中数组可以包含另外一个数组,或者另外一个json对象:
student={ "name":"张三", "age":24, "score":[ {".net":91}, {"java":85}, {"python":79} ] }
可以使用for-in来循环访问数组
for(i in student.score) { x +="<h1>" +student.score[i]+"</h1>"; }
5、修改数组值
可以使用索引值来修改数组值:
student.score[1]=93;
6、删除数组元素
可以使用delete关键字来删除数组元素:
delete student.score[0];
到此这篇关于json基础介绍与详细用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持代码网。
发表评论