这些都是我写过的文章,特别是第一篇文章,荐读。
<html>
<head>
<meta charset="utf-8">
<title>JSONtitle>
head>
<body>
<h1>员工信息h1>
<p>
ID: <span id="js_id">span><br/>
Name: <span id="js_name">span><br/>
Age: <span id="js_age">span><br/>
Email: <span id="js_email">span><br/>
p>
<script>
var jsonObj= {
"id":"1111",
"name":"王富贵",
"age":"30",
"email":"[email protected]"
};
document.getElementById("js_id").innerHTML=jsonObj.id
document.getElementById("js_name").innerHTML=jsonObj.name
document.getElementById("js_age").innerHTML=jsonObj.age
document.getElementById("js_email").innerHTML=jsonObj.email
script>
body>
html>
有关于第三篇文章——《Java对象数据的XML和JSON表示》,这篇文章主要是实例的演示,下面讲讲JSON与XML的异同,以及为什么选择JSON更好。
=> 对于AJAX应用程序来说,JSON比XML可以更便捷。
XML需要使用XML解析器来解析,JSON可以使用标准的JavaScript函数来解析,这也是二者最大不同之一了。
上面的代码可以按照名称访问JSON对象值。
<p>
ID: <span id="js_id">span><br/>
Name: <span id="js_name">span><br/>
Age: <span id="js_age">span><br/>
Email: <span id="js_email">span><br/>
p>
读取id属性为例,还有如下两种写法:
var a = jsonObj.id;
var a = jsonObj["id"];
我们可以使用 for-in 来循环对象读取对象属性和值(参考Java的 for-each 循环):
for (a in jsonObj) {
document.getElementById("attribute").innerHTML += a + ":" + jsonObj[a]+ "
";
}
完整代码:
<html>
<head>
<meta charset="utf-8">
<title>JSONtitle>
head>
<body>
<h1>员工信息h1>
<p id="attribute">p>
<script>
var jsonObj= {
"id":"1111",
"name":"王富贵",
"age":"30",
"email":"[email protected]"
};
for (a in jsonObj) {
document.getElementById("attribute").innerHTML += a + ":" + jsonObj[a]+ "
";
}
script>
body>
html>
可以直接用点(.)运算符或者方括号([])来访问并修改对象的值。
下面的代码,把“王富贵”的名字,改成了“陈二狗”:
jsonObj.name="陈二狗";
完整代码:
<html>
<head>
<meta charset="utf-8">
<title>JSONtitle>
head>
<body>
<h1>员工信息h1>
<p id="attribute">p>
<script>
var jsonObj= {
"id":"1111",
"name":"王富贵",
"age":"30",
"email":"[email protected]"
};
jsonObj.name="陈二狗";
for (a in jsonObj) {
document.getElementById("attribute").innerHTML += a + ":" + jsonObj[a]+ "
";
}
script>
body>
html>
运行示例:
可以使用delete
关键词+点(.)运算符或者方括号([])来访问并删除对象的值。
下面的代码,删除了王富贵的年龄和Email:
delete jsonObj.age;
delete jsonObj["email"];
完整代码:
<html>
<head>
<meta charset="utf-8">
<title>JSONtitle>
head>
<body>
<h1>员工信息h1>
<p id="attribute">p>
<script>
var jsonObj= {
"id":"1111",
"name":"王富贵",
"age":"30",
"email":"[email protected]"
};
delete jsonObj.age;
delete jsonObj["email"];
for (a in jsonObj) {
document.getElementById("attribute").innerHTML += a + ":" + jsonObj[a]+ "
";
}
script>
body>
html>
数组和对象相似,包括访问、修改、删除的点号(.)和删除的delete关键词。
不过,使用属性名+方括号的访问方式被换成了使用索引数字+方括号的访问方式(参考其他编程语言)
之前也说了,可以大括号小括号随便嵌套。
读or改的话,只需要符合上面说的访问语法,逐层使用点号即可。
我想用Java面向对象的知识来说明一下。
先说为什么是大括号,为什么是中括号?
系统中可能存在同一类型的很多对象,他们实际上是“平级”的,这时,相当于是数组中存储的多个元素,所以要使用方括号([])。
而每个类规定了其对象应该具有的属性,属性有类型,也有其取值,所以K-V对儿表达的正是这种属性名:属性值
的关系,它是一个对象内部的。
接下来谈谈为什么会嵌套呢?
四种情况吧:
如此,我们不难理解嵌套的实际意义了。
JSON 通常用于与服务端交换数据。通过网络接收服务器端发来的JSON是String,而通过网络发往服务器的JSON也是String,但我们处理的是JSON,所以设计JSON与String的转换。
转换函数是这样的:
语法格式:
JSON.parse(text[, reviver])
参数说明:
参数名称 | 参数意义 | 是否必选 |
---|---|---|
text | 有效的JSON字符串 | √ |
reviver | 每个成员都会调用的、用于转换结果的函数 | × |
实例:
接收到数据:
var str = '{"id":"1111", "name":"王富贵", "age":"30", "email":"[email protected]"}';
JSON.parse():
var jsonObj = JSON.parse(str);
语法格式:
JSON.stringify(value[, replacer[, space]])
参数说明:
参数名称 | 参数意义 | 是否必选 |
---|---|---|
value | 要转换的JavaScript值(通常为对象或数组) | √ |
replacer | 用于转换结果的函数或数组 | × |
space | 文本添加缩进、空格和换行符 | × |
space参数:
实例:
接收到数据:
var jsonObj = {"id":"1111", "name":"王富贵", "age":"30", "email":"[email protected]"};
JSON.parse():
var str = JSON.stringify(jsonObj);
注意事项:
JSON不允许包含函数,JSON.stringify()会删除JavaScript对象的函数,包括key和value。
真的不建议使用函数,如果非要用,也要先将函数转换为字符串再用。
JSON不能存储Date对象!
如果我们想要存储Date对象,需要将其转换为字符串,再将字符串转换为Date对象。
推荐菜鸟教程的JSON在线解析器,支持如下功能: