json与xml是我们进行数据传输方式,json由于其快速的提取方式经常被大家采用。
大部分的前台框架都对json格式的数据提取进行了处理,如ext,jquery等。但是当我们不用这些框架的时候,对server端的响应的json数据的处理上往往会遇到一些问题,下面是我遇到的一个郁闷了好久的问题。
当server,response的json一个时,响应结果明明为一个json对象如:
{ "programmers": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
]
}
但如果直接操作:
var people =
{ "programmers": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
],
"authors": [
{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
],
"musicians": [
{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
]
}
people.programmers[0].firstName
确报错,没有此对象。
在此主意不要被外表所迷惑。
ajax的XMLHttpRequest响应目前只有两种格式:
一为字符串形式的响应数据,使用responseText获得。
一为XML 形式的响应数据,使用responseXML获得。
所以server的响应格式实质为String类型,而不是json类型。
所以无法直接采用操作json对象格式的形式获取数据。由此我们想到了eval,但是问题又出来了。
直接用eval方法会出项格式转化错误,那该如何解决呢?最后查阅json官网上的json.js之后发现
j = eval('(' + text + ')');
的转换方式,并测试如下
首先组装字符串:
var list = "{'list':{'codeNumber':'111111111111111'}],'totalCount':6}";
组合成了字符串list,下一步就是转换成对象了方法如下:
在字符串两端再加上括号然后eval就ok了。测试代码如下:
var list = "{'list':{'codeNumber':'111111111111111'}],'totalCount':6}";
var res =eval('('+list2+')')
alert(res);
alert(res.list[0].codeNumber);
主意只有在alert(res)为[object Object]时,才说明,此对象有可能为一个json对象而非字符串。
分享到:
相关推荐
自动格式化json字符串自动格式化json字符串自动格式化json字符串
由php对象生成json字符串 把php对象变成json字符串.zip
Json对象与json字符串互相转换处理工具
JsonView,json字符串查看工具
主要用于将java对象转换为json对象字符串,或字符串数组。
在cjson基础上,实现了字符串与结构体自动相互转化的功能。 可以自动将字符串(JSON格式)转化为对应的结构体,反之亦可
mysql解析Json字符串插件 安装方法 1、拷贝lib_mysqludf_json_parsing.dll到mysql目录C:\Program Files\MariaDB 5.5\lib\plugin下 2、在数据库中执行 DROP FUNCTION json_get; CREATE FUNCTION json_get RETURNS ...
C# json格式转换,Json格式字符串与C#对象相互转换,类库和测试demo 写了一个json与C#对象相互装换的类库,直接调用就行,有测试案例,代码注释非常详细 部分方法: /// 将Json字符串解析为C#中的对象 /// Json格式...
PBJson用于解析和生成Json结构的字符串,没有涉及Json嵌套字符串情况
C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言...
c++读取解析Json字符串内容
将string类型的xml转为JSON字符串,利用JSONObject处理JSON串
json转译工具,用于对打印json字符串的格式化,使易于查看分析
java解析Json字符串java解析Json字符串java解析Json字符串java解析Json字符串
在cjson基础上,实现了字符串与结构体自动相互转化的功能。 可以自动将字符串(JSON格式)转化为对应的结构体,反之亦可。
对象生成json字符串,根据字符串生成对象|list
使用Java操作JSON字符串对象,使用Java操作JSON字符串对象
json特殊字符串转换
java,android map形式和数组list转json字符串 可直接调用
根据json.org上的代码提炼出的接口,C语言json_checker(),检测字符串是否为json字符串。