JSON 对象
一个简单的 JSON 对象语法:
{ "key1":value1, "key2":value2, ... "keyn":valueN }
JSON 对象使用在大括号中书写,对象可以包含多个 key/value(键/值)对。
其中:
- key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
- key 和 value 中使用冒号(:)分割。
- 每个 key/value 对使用逗号(,)分割。
1. 创建简单的对象
JSON 对象可以使用 JavaScript 创建。我们来看看使用 JavaScript 创建 JSON 对象的各种方式:
- 创建一个空对象:
var JSONObj = {};
- 创建一个新对象:
var JSONObj = new Object();
- 创建一个 bookname 属性值为字符串,price属性值为数字的对象。可以通过使用 '.' 运算符访问属性。
var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };
这里有一个例子,展示了在 JavaScript 中使用 JSON 创建对象:
<html> <head> <title>在JavaScript中使用JSON创建对象(codebaoku.com)</title> <script language="javascript" > var JSONObj = { "name" : "编程宝库(codebaoku.com)", "time" : 2020 }; document.write("<h1>JSON和JavaScript的例子</h1>"); document.write("<h3>网站的名字="+JSONObj.name+"</h3>"); document.write("<h3>时间="+JSONObj.time+"</h3>"); </script> </head> <body> </body> </html>
2. 访问对象值
你可以使用点号(.)来访问对象的值:
var myObj, x; myObj = { "name":"codebaoku.com", "alexa":8000, "site":null }; x = myObj.name;
你也可以使用中括号([])来访问对象的值:
var myObj, x; myObj = { "name":"codebaoku.com", "alexa":8000, "site":null }; x = myObj["name"];
3. 循环对象
你可以使用 for-in 来循环对象的属性:
var myObj = { "name":"w3cschool", "alexa":8000, "site":null }; for (x in myObj) { document.getElementById("demo").innerHTML; }在 for-in 循环对象的属性时,使用中括号([])来访问属性的值:
var myObj = { "name":"w3cschool", "alexa":8000, "site":null }; for (x in myObj) { document.getElementById("demo").innerHTML += myObj[x]; }
4. 创建数组对象
下面的例子展示了在 JavaScript 中使用 JSON 创建数组对象,可以将下面的代码保存为 json_array_object_w3cschool.htm:
<html> <head> <title>在 JavaScript 中使用 JSON 创建数组对象(codebaoku.com)</title> <script language="javascript" > document.writeln("<h2>JSON数组对象(codebaoku.com)</h2>"); var books = { "Pascal" : [ { "Name" : "Pascal Made Simple", "price" : 700 }, { "Name" : "Guide to Pascal", "price" : 400 } ], "Scala" : [ { "Name" : "Scala for the Impatient", "price" : 1000 }, { "Name" : "Scala in Depth", "price" : 1300 } ] } var i = 0 document.writeln("<table border='2'><tr>"); for(i=0;i<books.Pascal.length;i++) { document.writeln("<td>"); document.writeln("<table border='1' width=100 >"); document.writeln("<tr><td><b>Name</b></td><td width=50>" + books.Pascal[i].Name+"</td></tr>"); document.writeln("<tr><td><b>Price</b></td><td width=50>" + books.Pascal[i].price +"</td></tr>"); document.writeln("</table>"); document.writeln("</td>"); } for(i=0;i<books.Scala.length;i++) { document.writeln("<td>"); document.writeln("<table border='1' width=100 >"); document.writeln("<tr><td><b>Name</b></td><td width=50>" + books.Scala[i].Name+"</td></tr>"); document.writeln("<tr><td><b>Price</b></td><td width=50>" + books.Scala[i].price+"</td></tr>"); document.writeln("</table>"); document.writeln("</td>"); } document.writeln("</tr></table>"); </script> </head> <body> </body> </html>
5. 嵌套 JSON 对象
JSON 对象中可以包含另外一个 JSON 对象:
myObj = { "name":"w3cschool", "alexa":10000, "sites": { "site1":"www.w3cschool.cn", "site2":"m.w3cschool.cn", "site3":"c.w3cschool.cn" } }你可以使用点号(.)或者中括号([])来访问嵌套的 JSON 对象。
x = myObj.sites.site1; // 或者 x = myObj.sites["site1"];
6. 修改值
你可以使用点号(.)来修改 JSON 对象的值:
myObj.sites.site1 = "www.codebaoku.com";你可以使用中括号([])来修改 JSON 对象的值:
myObj.sites["site1"] = "www.codebaoku.com";
7. JSON 对象和字符串的区别
JSON 对象和 JSON 字符串的区别:
JSON 对象
var str2 = { "name": "asan", "sex": "man" };JSON 字符串
var str1 = '{ "name": "deyuyi", "sex": "man" }';JSON Schema 是一种基于 JSON 格式定义 JSON 数据结构的规范。它被写在 IETF 草案下并于 2011 年到期。JSON 模式:描述现有数据格式。干净的人类和机器可读的文档。完整的结构验证,有利于自动化测试。完整的结构验证,可用于验证客户端提交的数据。