Json语法
- 数据使用名:值对表示
- 使用{}保存对象,每个名称后面跟着一个‘:’(冒号),名/值对使用,(逗号)分割
- 使用【】保存数组,数组值使用,(逗号)分割。
- 简单例子
{
"book" : [
{
"id" : "01",
"language" : "java",
"edition" : "third"
},
{
"id" : "02",
"language" : "c++",
"edition" : "sencond"
} ]
}
- Json支持一下两种数据结构
名/值对集合:这一数据结构由不同的编程语言支持
有序的值列表:包括数组、列表、向量或序列等等。
Json的语法规则
Json语法是JavaScript对象表示法语法的子集
Json语法规则不复杂,它参考了C语言家族的一些习惯,学习起来并不感到陌生。
- 数据在 名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
- 书写格式
名称:值对
注意:
名称:值对包括字段名称(在双引号中),后面写一个冒号,然后就是值
例:"firstName" : "Json"
Json的值
可以是:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true或false)
- 数组(在方括号中)
- 对象(在花括号中)
- null
Json对象
- Json对象在花括号中书写
- 对象可以包含多个名称 / 值对
例如:
{
"firstName" : "JavaScript" , "lastName" : "Json"
}
Json数组
- Json数组在方括号中书写:
- 数组可以包含多个对象:
{
"employees" : [
{
"firstName" : "John" , "lastName" : "Doe"
},
{
"firstName" : "Anna" , "lastName" : "Smith"
}]
}
上面的例子中,对象employees是包含了两个对象的数组,每一个对象代表一条关于某人(有名和姓)的记录
Json使用JavaScript语法
因为Json使用JavaScript语法,所以无需额外的软件就能处理JavaScript中的Json
var employees = [
{
"firstName" : "John" , "lastName" : "Doe"
},
{
"firstName" : "Anna" , "lastName" : "Smith"
}
];
- 访问如下:
employees[0].lastName;
- 修改如下:
employees[0].lastName = "Jonse";
Json使用
Json经常应用到的场景是:
在后台应用程序中将响应数据封装成Json格式,传到前台之后,需要将Json格式转换为JavaScript对象,然后再网页中使用该数据。
把Json文本转换为JavaScript对象
Json最常见的用法之一,是从web服务器上读取Json数据(作为文件或作为HttpRequest),将Json数据转换为JavaScript对象,然后再网页上使用该数据。
- 创建包含Json语法的JavaScript字符串
var txt = '{
"employees" : [ ' +
' { "firstName" : "John" ,
"lastName" : "Anna"
},' +
'{ "firstName" : "Smith" ,
"lastName" : "Peter"
}
]
}'
由于Json是JavaScript语法的子集,JavaScript函数eval()可用于将Json文本转换为JavaScript对象。
eval()函数使用的是JavaScript编译器,可解析Json文本,然后生成JavaScript对象,必须把文本包围在括号中,这样才能避免语法错误。var obj = eval (" ( " + txt +" ) ");
在网页中使用JavaScript对象:
<p>
firstName : <span id = "fname"></span><br />
lastName : <span id = "lname"></span><br />
</p>
<script>
document.getElementById("fname").innerHTML = obj.employees[1].firstName
document.getElementById("lname").innerHTML = obj.employees[1].lastName
</script>