这篇文章主要介绍了 js 读取并解析 JSON 类型数据的方法, 具体分析了 json 格式的功能、用途与 JS 解析技巧, 具有一定参考借鉴价值, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
本文实例讲述了 js 读取并解析 JSON 类型数据的方法。分享给大家供大家参考,具体如下:
一、什么是 JSON?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式,同时,JSON 是 JavaScript 原生格式。
非常适合于服务器与 JavaScript 的交互
二、为什么使用 JSON 而不是 XML
他们都是这样说的:尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有优势,许多 AJAX 应用甚至直接返回 html 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系统的复杂性,但同时缺少了一定的灵活性
三、如何使用
下面代码是 html 代码片段,实现点击按钮解析 json 格式数据并 alert 内容
- <input type="button" value="button" onclick="clicks();"/>
下面是 js 函数代码:
- var json = {
- contry: {
- area: {
- man: "12万",
- women: "10万"
- }
- }
- };
- //方式一:使用eval解析
- var obj = eval(json);
- alert(obj.constructor);
- alert(obj.contry.area.women);
- //方式二:使用Funtion函数
- var strJSON = "{name:'json name'}"; //得到的JSON
- var obj = new Function("return" + strJSON)(); //转换后的JSON对象
- alert(obj.name); //json name
- alert(obj.constructor);
- //复杂一点的json数组数据的解析
- var value1 = [{
- "c01": "1",
- "c02": "2",
- "c03": "3",
- "c04": "4",
- "c05": "5",
- "c06": "6",
- "c07": "7",
- "c08": "8",
- "c09": "9"
- },
- {
- "c01": "2",
- "c02": "4",
- "c03": "5",
- "c04": "2",
- "c05": "8",
- "c06": "11",
- "c07": "21",
- "c08": "1",
- "c09": "12"
- },
- {
- "c01": "5",
- "c02": "1",
- "c03": "4",
- "c04": "11",
- "c05": "9",
- "c06": "8",
- "c07": "1",
- "c08": "8",
- "c09": "2"
- }];
- var obj1 = eval(value1);
- alert(obj1[0].c01);
- //复杂一点的json的另一种形式
- var value2 = {
- "list": [{
- "password": "1230",
- "username": "coolcooldool"
- },
- {
- "password": "thisis2",
- "username": "okokok"
- }],
- "array": [{
- "password": "1230",
- "username": "coolcooldool"
- },
- {
- "password": "thisis2",
- "username": "okokok"
- }]
- };
- var obj2 = eval(value2);
- alert(obj2.list[0].password);
- }
四、eval
① 这种形式将使得性能显著降低,因为它必须运行编译器
② eval 函数还减弱了你的应用的安全性,因为它给被求值的文本赋予了太多的权力。就像 with 语句执行的方式一样,它降低了语言的性能
③ Function 构造器是 eval 的另一种形式,所以它同样也应该被避免使用。
希望本文所述对大家 JavaScript 程序设计有所帮助。
来源: