JavaScript访问JSON
疑问:JSON主要用于数据传递和数据表示上,程序势必要和JSON数据进行交互;那么JavaScript如何访问JSON文件的呢
JavaScript天生就具备JSON数据的处理能力
在web目录下创建sample.html
直接将emp.json中的内容,赋值给变量json;JavaScript可以将其作为一个数组进行解析
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> var json=[ { "empno": "7369", "ename": "张三", "job": "软件工程师", "hiredate": "2017-05-12", "salary": 130000, "dname": "研发部" }, { "empno": "7449", "ename": "王五", "job": "客户经理", "hiredate": "2018-06-12", "salary": 100000, "dname": "市场部", "customers": [ { "cname": "李四" }, { "cname": "黄玉峰" }, { "cname": "郭嘉" } ] } ]; console.log(json); </script> </head> <body>
</body> </html>
|
结果:虽然输出的页面是空白的,但是在控制台中可以查看到我们书写的JSON数组
示例:在浏览器页面对json内容进行输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> var json=[ { "empno": "7369", "ename": "张三", "job": "软件工程师", "hiredate": "2017-05-12", "salary": 130000, "dname": "研发部" }, { "empno": "7449", "ename": "王五", "job": "客户经理", "hiredate": "2018-06-12", "salary": 100000, "dname": "市场部", "customers": [ { "cname": "李四" }, { "cname": "黄玉峰" }, { "cname": "郭嘉" } ] } ]; console.log(json); for (var i=0;i<json.length;i++){ var emp = json[i]; document.write("<h1>"); document.write(emp.empno); document.write(","+emp.empno); document.write(","+emp.job); document.write(","+emp.hiredate); document.write(","+emp.salary); document.write(","+emp.dname); document.write("</h1>"); if (emp.customers !=null){ document.write("<h2>"); for (var j=0;j<emp.customers.length;j++){ var customer=emp.customers[j]; document.write(customer.cname+","); } document.write("</h2>") } } </script> </head> <body>
</body> </html>
|
可以看到:(1)JavaScript把[]JSON作为一个数组解析了;(2)直接通过JSON[i]这种方式就能获取,JSON对象数组中的第i个对象;(3)然后通过emp.empno这种形式就能获取empno这个键对应的值;(4)一个键的值可能是一个字符串(或数组),也可以是包含在JSON对象中的数组
效果:
JSON与字符串互相转换
- JSON.parse()方法将字符串转换为JSON对象,注意JSON对象是浏览器内置对象:JavaScript可以直接调用,但IE8以下的版本不支持JSON对象
- JSON.stringify()方法将JSON对象转换为字符串
示例一
JavaScript将字符串转成JSON对象:JSON.parse(str);
需要注意:
- 定义JSON对象的方式是:var json = {}; 定义字符串是:var str=”{}”;
- var str = “{"class_name":"五年级三班"}”;其中的反斜杆是为了将””这个符号转义
首先在web目录下创建sample2.html
然后在文件中定义字符串后转变为JSON对象
效果:
示例二
JavaScript将JSON对象转换为字符串:JSON.stringify(json)
首先在web目录下,创建sample3.html
在sample3.html中将JSON对象转变为字符串
效果:
字符串和JSON对象转换的用途
Ajax中会用到;Ajax是JavaScript和后台的Java程序进行通信的方式;
字符串转JSON的一个应用:
Java返回的服务器后台的数据,是一个长的很像JSON的字符串;在JavaScript中获取到后台返回的这个数据后,需要使用JSON.parse()将这个字符串转换为JSON对象,这样,JavaScript才能将其中的属性提取出来;(这个会很常用)
JSON转字符串:
这个在实际开发中不常用,了解就好了
初始化JSON对象
在JavaScript中可以将json看出一个对象,定义json后,可以通过设置属性的方式,初始化json;如下面的json2;
这种方式,更像是JavaScript把JSON当成了对象处理,很清晰
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>初始化JSON对象</title> </head> <body> <script type="text/javascript"> var json ={"class_name":"五年级六班"}; var str =JSON.stringify(json); console.info(json); console.info(str);
var json2={}; json2.class_name="五年级六班"; json2.location="图书馆"; console.info(json2); </script> </body> </html>
|
效果: