在JS环境下的JSON的认识和使用以及JS如何解析JSON
2014-04-22 19:02
686 查看
首先明确JSON的含义:JavaScript Object Notation
我们知道存储数据交换数据可以通过XML(这个在之前的一篇博客讲到ASP.NET C#怎样读取XML中的数据),可以通过数据库(这个最普遍),也可以通过JSON。
JSON是纯文本,没有结束标签。
可以使用数组,有层级结构(这个就预示着下面可以用stuList.stuList[0].stuName这种写法)
JSON的语法类似XML,但相比之下,比XML更小,更快,更容易解析。
我们这里讨论如何通过JavaScript对JSON进行解析
(这个实质上就是对JavaScript对象的操作,把JSON数组或对象看成JavaScript对象进行处理,如果JSON是写在另外一个文本中的就先把其转换解析成JavaScript对象)
暂时不考虑C#对JSON的解析。
注意:这里只要认清这两点就行了
1.JSON语法是JavaScript对象表示法语法的子集
2.因为1,所以无需额外的东西就能处理JavaScript中的JSON
JSON用的最多的是JSON对象和JSON数组,其中JSON数组用的最为频繁。
JSON对象:
{"stuName":"钢铁侠","stuAge":20}
JSON数组(stuList数组包含了三个对象):
{"stuList":
[
{"stuName":"钢铁侠","stuAge":20}
{"stuName":"蜘蛛侠","stuAge":30}
{"stuName":"蝙蝠侠","stuAge":40}
]
}
下面就是一个JSON数组的例子,其实对于JavaScript处理这种JSON数据实质上就看成处理的JavaScript对象。
以上是JSON形式的数据已经写在JavaScript中的情形,那么怎么把写在文本中的数据转换成JavaScript对象再进行处理呢
总结就是一句话:json不作为外部文件就不需要eval()解析,如果直接在js中定义的json类型的数据,可以直接通过对象找到对应的值。
这个在W3CShool中讲的很好,主要就是用JavaScript的eval()函数进行解析,我这里就再写一遍。
在比较新的浏览器,提供了原生的JSON支持,而且这种JSON解析更快。
这里的代码重要把
var obj = eval("("+ txt +")")
改成
var obj = JSON.parse(txt) //这个是在较新的浏览器的情况下
我们知道存储数据交换数据可以通过XML(这个在之前的一篇博客讲到ASP.NET C#怎样读取XML中的数据),可以通过数据库(这个最普遍),也可以通过JSON。
JSON是纯文本,没有结束标签。
可以使用数组,有层级结构(这个就预示着下面可以用stuList.stuList[0].stuName这种写法)
JSON的语法类似XML,但相比之下,比XML更小,更快,更容易解析。
我们这里讨论如何通过JavaScript对JSON进行解析
(这个实质上就是对JavaScript对象的操作,把JSON数组或对象看成JavaScript对象进行处理,如果JSON是写在另外一个文本中的就先把其转换解析成JavaScript对象)
暂时不考虑C#对JSON的解析。
注意:这里只要认清这两点就行了
1.JSON语法是JavaScript对象表示法语法的子集
2.因为1,所以无需额外的东西就能处理JavaScript中的JSON
JSON用的最多的是JSON对象和JSON数组,其中JSON数组用的最为频繁。
JSON对象:
{"stuName":"钢铁侠","stuAge":20}
JSON数组(stuList数组包含了三个对象):
{"stuList":
[
{"stuName":"钢铁侠","stuAge":20}
{"stuName":"蜘蛛侠","stuAge":30}
{"stuName":"蝙蝠侠","stuAge":40}
]
}
下面就是一个JSON数组的例子,其实对于JavaScript处理这种JSON数据实质上就看成处理的JavaScript对象。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script type="text/javascript"> var stuList = { "stuList": [ { "stuName": "钢铁侠", "stuAge": 20, "stuImage": "images/1.png" }, { "stuName": "蜘蛛侠", "stuAge": 30, "stuImage": "images/2.png" }, { "stuName": "蝙蝠侠", "stuAge": 40, "stuImage": "images/3.png" }, { "stuName": "绿巨人", "stuAge": 50, "stuImage": "images/4.png" } ] }; var length = stuList.stuList.length; var stu1_name = stuList.stuList[0].stuName; alert(stu1_name); </script> </head> <body> </body> </html>
以上是JSON形式的数据已经写在JavaScript中的情形,那么怎么把写在文本中的数据转换成JavaScript对象再进行处理呢
总结就是一句话:json不作为外部文件就不需要eval()解析,如果直接在js中定义的json类型的数据,可以直接通过对象找到对应的值。
这个在W3CShool中讲的很好,主要就是用JavaScript的eval()函数进行解析,我这里就再写一遍。
<html> <body> <h2>通过 JSON 字符串来创建对象</h3> <p> First Name: <span id="fname"></span><br /> Last Name: <span id="lname"></span><br /> </p> <script type="text/javascript"> var txt = '{"employees":[' + '{"firstName":"Bill","lastName":"Gates" },' + '{"firstName":"George","lastName":"Bush" },' + '{"firstName":"Thomas","lastName":"Carter" }]}'; var obj = eval ("(" + txt + ")"); document.getElementById("fname").innerHTML=obj.employees[1].firstName document.getElementById("lname").innerHTML=obj.employees[1].lastName </script> </body> </html>
在比较新的浏览器,提供了原生的JSON支持,而且这种JSON解析更快。
这里的代码重要把
var obj = eval("("+ txt +")")
改成
var obj = JSON.parse(txt) //这个是在较新的浏览器的情况下
相关文章推荐
- 【问题-java-json】josn的发送与接收(全)解析json对象与字符串在js中的区别,以及后端spring该如何接收?
- JavaScript中解析JSON --- json.js 、 json2.js 以及 json3.js的使用区别
- IE8中的原生JSON对象如何使用以及解析?
- JS/JavaScript中解析JSON --- JSON.parse()、JSON.stringify()以及$.parseJSON()使用详解
- JSON:它是什么,它的工作原理以及如何使用它
- 关于C#使用工具类解析JSON数据以及将类JSON化
- 前台如何解析json格式 以及后台如何生成json格式
- 如何使用webmagic发送post请求,并解析传回的JSON
- 如何使用rapidjson库进行json格式的封装及解析
- Linux下如何使用jq解析json数据
- 如何使用JS筛选JSON数据
- JS 判断客户端环境(以及如何区分QQ客户端和QQ浏览器)
- JS解析json数据(如何将json字符串转化为数组)
- 关于SAXReader解析XML以及JSONObject和JSONArray的使用总结
- knock.js的subscribe使用 通过$.ajax(); $get();解析JSON数据
- ajax如何经过后台返回json数组以及在在js中得到json对象
- 如何对动态创建控件进行验证以及在Ajax环境中的使用
- HttpClient 以及使用 gson 解析json
- js使用eval解析json(js中使用json)
- 使用js对JSON进行解析