JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。
- JSON 是轻量级的文本数据交换格式
- JSON 独立于语言
- JSON 具有自我描述性,更易理解
- JSON 比 XML 更小、更快,更易解析
JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。
JSON 语法规则 JSON 语法是 JavaScript 对象表示法语法的子集。
1.数据在名称/值对中
2.数据由逗号分隔
3.花括号保存对象
4.方括号保存数组
JSON 名称/值对 JSON 数据的书写格式是:名称/值对 名称必须用双引号""包含起来
值可以是任意javascript数据类型,字符串,布尔,数字,数组甚至是对象
名称/值对之间用逗号,隔开
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
姓名:<span id="name"></span></br>
年龄:<span id="age"></span></br>
性别:<span id="sex"></span></br>
</body>
<script type="text/javascript">
var jsonObject = {
"name":"张三",
"age":"16",
"sex":"男",
};
document.getElementById("name").innerHTML = jsonObject.name;
document.getElementById("age").innerHTML = jsonObject.age;
document.getElementById("sex").innerHTML = jsonObject.sex;
</script>
</html>
JSON 数组
JSON 数组在方括号[]中书写:
数组可包含多个对象
创建一个对象数组,进行赋值:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var obj= [
{"name":"小明","age":16},
{"name":"小华","age":13},
{"name":"小花","age":18}
]
document.write("姓名:"+obj[0].name +"年龄:"+obj[0].age);
document.write("姓名:"+obj[1].name +"年龄:"+obj[1].age);
document.write("姓名:"+obj[2].name +"年龄:"+obj[2].age);
</script>
</body>
</html>
由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。
eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
姓名:<span id="name"></span></br>
年龄:<span id="age"></span></br>
</body>
<script type="text/javascript">
var txt= '{"jsonObject":[' +
'{"name":"小华","age":"13"},' +
'{"name":"小明","age":"16"},' +
'{"name":"小花","age":"18"}]}';
var obj = eval("("+txt+")")
document.getElementById("name").innerHTML = obj.jsonObject[1].name;
document.getElementById("age").innerHTML = obj.jsonObject[1].age;
</script>
</html>
JSON 对象转换为字符串
通过 JSON.stringify 函数把对象转换为字符串
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var person = {"name":"小明","age":"16"};
document.write("姓名:"+person);
var String = JSON.stringify(person);
document.write("String:"+String);
</script>
</body>
</html>
JSON 解析器
提示:eval() 函数可编译并执行任何 JavaScript 代码。
使用 JSON 解析器将 JSON 转换为 JavaScript 对象是更安全的做法。JSON 解析器只能识别 JSON 文本,而不会编译脚本。
在浏览器中,这提供了原生的 JSON 支持,而且 JSON 解析器的速度更快。
较新的浏览器和最新的 ECMAScript (JavaScript) 标准中均包含了原生的对 JSON 的支持。
Web 浏览器支持 | Web 软件支持 |
---|---|
|
|