早期的JSON解析器基本上就是使用JavaScript的eval()函数。由于JSON是JavaScript语法的自己,因此eval()函数可以解析、解释并返回JavaScript的对象和数组。 ECMAScript 5对解析JSON的行为进行了规范,定义了全局对象JSON。 JSON对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript。例如: 新建一个HTML:代码如下: 代码如下:<htm...
上一节我们讲解了JSON.stringify()的基本用法,这一节我们来重点探讨一下序列化。 JSON.stringify()除了要序列化的js对象外,还可以接收另外两个参数,这两个参数用于指定不同方式序列化js对象。第一个参数是过滤器,可以使一个数组,也可以是一个函数;第二个参数是一个选项,表示是否在JSON字符串中保留缩进。单独或组合使用这两个参数,可以更全面深入地控制JSON的序列化。 1、过滤结果 如果过滤器参数是数组,那么JSON.stringi...
这一节我们主要讨论json的解析。 JSON.parse()方法也可以接收另一个参数,该参数是一个函数,将早每个键值对上调用。为了区别JSON.stringify()接收的替换(过滤)函数(replacer),这个函数被称作还原函数(reviver),但实际上这两个函数的签名是相同的——它们都接收连个参数,一个键和一个值,而且都需要返回一个值。 如果还原函数返回undefined,则表示要从结果中删除相应的键;如果返回其他值,则将该值插入到结果中。如: ...
前台: 代码如下:$.ajax({ type: "POST", url: "GetMenuRole.ashx", data: "", dataType: "json", success: function (data) { if (data.Status == false) { alert(data.ErrorReason); } else { //解析这个菜单列表 alert(data.MenuList); } }, error: function (data) { alert(data); } }); 后台:(需要使用双引号) 代码如下:string sReturnJson = " <KH>\"Status\":\"{0}\",\"MenuList\":\"{1}\",\"ErrorReason\":\"{2}\"</KH>...
代码如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <SCRIPT LANGUAGE="JavaScript"> var t="{firstName: cyra, lastName: richardson, address: { streetAddress: 1 Microsoft way, city: Redmond, state: WA, postalCode: 98052 },phoneNumbers: [ 425-777-7777,206-777-7777 ] }"; var jsonobj=eval((+t+)); alert(jsonobj.firstName); alert(jsonobj.last...
等到问题解决了,也大致明白怎么个意思了,归根结底还是对jquery对相关json对象获取的理解有所偏差。 这里考虑都考虑的是服务器返回的是JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明。 这里首先给出JSON字符串集,字符串集如下: 代码如下: 代码如下:var data=" { root: [ {name:1,value:0}, {name:6101,value:西安市}, {name:6102,value:铜川市}, {name:6103,value:宝鸡市...
1.比较古老的方法: 代码如下:function strToJson(str){ var json = eval(( + str + )); return json; } 2.比较常用的方法: 代码如下:function strToJson(str){ return (new Function("return " + str))(); } 3.IE67不支持的json对象方法: 代码如下:function strToJson(str){ return JSON.parse(str); } 4.jQuery提供的方法: 代码如下:parseJSON: function( data ) { if ( typeof data !== "string" || !data ) { return nul...
经查,原来是json数据的格式要求非常严格,属性名称必须是用双引号“”括起来。 代码如下:var a=JSON.parse({"a":"aaaaa"});//正确 var a=JSON.parse("{a:aaaaa}");//错误
下面说一下,最近在使用jquery 1.4中使用$.ajax()方法解析json对象遇到的问题。 Json对象是: 代码如下:[{name:二手房出售,infoCount:0,pageUrl:/ershoufang},{name:二手房求购,infoCount:0,pageUrl:/qiugou},{name:二手房装修,infoCount:0,pageUrl:/esfzhuangxiu},{name:二手回收,infoCount:0,pageUrl:/huishou},{name:二手摩托车,infoCount:0,pageUrl:/motor},{name:二手汽车求购,infoCount:0,pageUrl:/ershoucheqg},{name:二手...
解析时用到的方法一般是eval或者new function,而目前IE8和Firefox3.1又内置了原生的JSON对象(据说会有一定的性能提升)。那我们在实际使用的时候怎样从这三种方法(因为性能问题,不考虑用javascript实现的解析)里面来选择呢?面对众多的浏览器,哪种方式的性能是最好的呢? 一、测试方法 1、首先指定测试次数及JSON字符串 代码如下:var count = 10000, o = null, i = 0, jsonString = {"value":{"items": [{"x":1,"y":2,"z":3...
JSON的规则很简单: 对象是一个无序的“‘名称/值对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值 对”之间使用“,”(逗号)分隔。具体细节参考http://www.json.org/json-zh.html 举个简单的例子: js 代码 代码如下:function showJSON() { var user = { "username":"andy", "age":20, "info": { "tel": "123456", "cellphone": "98765"}, "address": [ {"city"...
这就要利用到JQuery,ASHX以及Json来合作了。一篇文章有多个评论,每十个为一页。用户每点击下一页则自动抓去下一页,这个过程采用无刷新放心进行。 Json格式其实和表格式有异曲同工之妙,在网络传输中,它比XML还省流量,而且与JS有更好的融合,更容易被解析。Json格式样例如下: 代码如下:{"Products":[ {"orderid":"11077","customerid":"RATTC"}, {"orderid":"11078","customerid":"RATT"} ], "Img":[{"id":"12345","url" :"i...
这里考虑都考虑的是服务器返回的是JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明。 这里首先给出JSON字符串集,字符串集如下: 代码如下:var data=" { root: [ {name:'1',value:'0'}, {name:'6101',value:'西安市'}, {name:'6102',value:'铜川市'}, {name:'6103',value:'宝鸡市'}, {name:'6104',value:'咸阳市'}, {name:'6105',value:'渭南市'}, {name:'6106',value:'延安市...
Ext的Template支持通过传入json数据的方式进行模板替换。 API中有这样一段示例: 代码如下:var t = new Ext.Template( '<div name="{id}">', '<span class="{cls}">{name:trim} {value:ellipsis(10)}</span>', '</div>' ); t.append('some-element', {id: 'myid', cls: 'myclass', name: 'foo', value: 'bar'}); 稍作修改做个测试: 代码如下:var t = new Ext.Template( '<div name="{id}">', ...
概念介绍还是先简单说说Json的一些例子吧。注意,以下概念是我自己定义的,可以参考.net里面的TYPE的模型设计如果有争议,欢迎提出来探讨! 1.最简单:{"total":0} total就是值,值是数值,等于0 2. 复杂点{"total":0,"data":{"377149574" : 1}}total是值,data是对象,这个对象包含了"377149574"这个值,等于1 3. 最复杂{"total":0,"data":{"377149574":[{"cid":"377149574"}]}}total是值,data是对象,377149574是数组,这个数组包...