json复杂对象无法被jquery解析

wgc704 2014-01-28 07:26:11
各位牛人好!

本程序后台是jsp,前台用jquery-1.4.2.min.js

用org.json.jar包生成了json对象,传到前台的jquery用datatype:"json",总是无法解析 去掉datatype:"json"就可以输出

生成的json对象为:
[{"uid":"w","is_manager":{"id":"1","factory_id":"1","factory_con_person":"0","remark":"0","product_name":"0","factory_num":"0","is_old":"0","factory_con_num":"0","factory_name":"1"},"name":"wu"}]

网上找了很多方法,据说jquery1.4.2对json要求严格了,但是我是用org.json.jar包生成json的,应该是标准的json对象咋,所有键值都有双引号的

请各位牛人帮帮忙
...全文
186 点赞 收藏 10
写回复
10 条回复
wgc704 2014年02月17日
数据是没问题的,是我后面的解析出问题了,谢谢各位
回复 点赞
kaixi_008 2014年01月29日
引用 7 楼 u012518995 的回复:
[quote=引用 6 楼 u012518995 的回复:] 我又测试了一下,你的那1条json数据,无问题,可以获取数据。 是不是你还有其他测试数据,并非这一条。如果还有问题,那就是数据里有非法字符了,看看数据里有没有\{}等等json的关键字。
另外你说: 去掉datatype:"json"就可以输出。 这样的话,那你就去掉或写成text吧,json本身就是text,只不过写成json后,便于区分罢了。。。[/quote] 补充一下,如果是text格式的话,要使用
var mJSONData = [];
eval(" mJsonData =" + jsonData);
来进行赋值,才可按照json格式来使用。此时的变量就变成了mJsonData。
你就都试一下吧。总有适合于你的方法。
回复 点赞
kaixi_008 2014年01月29日
引用 6 楼 u012518995 的回复:
我又测试了一下,你的那1条json数据,无问题,可以获取数据。 是不是你还有其他测试数据,并非这一条。如果还有问题,那就是数据里有非法字符了,看看数据里有没有\{}等等json的关键字。
另外你说: 去掉datatype:"json"就可以输出。 这样的话,那你就去掉或写成text吧,json本身就是text,只不过写成json后,便于区分罢了。。。
回复 点赞
kaixi_008 2014年01月29日

我又测试了一下,你的那1条json数据,无问题,可以获取数据。
是不是你还有其他测试数据,并非这一条。如果还有问题,那就是数据里有非法字符了,看看数据里有没有\{}等等json的关键字。
回复 点赞
wgc704 2014年01月29日
引用 4 楼 u012518995 的回复:
[quote=引用 3 楼 wgc704 的回复:] [quote=引用 2 楼 u012518995 的回复:] 生成的Json格式,看着确实有问题。。。不知道生成前是个什么结构的数据。。。
是用org.json.jar的JSONObject对象 jsonobject.put("uid", user.getId()) 然后再用jsonarray.put(jsonobject)[/quote] json格式类似于如下: 简单型:

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }
复杂型:

{ "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }, { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" }, { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" } ], "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" } ] }
你的这种类型属于复杂型延伸的一种。除了uid,看里面还有is_manager。而is_manager是个表结构。 你可以单独测试某个字段。就很容易发现问题。或者直接手写json然后赋值,先注释掉那个工具包的put,再测试测试,就很容易找到错误点。[/quote] 刚刚试了一下 $.ajax({ data:{ uid:uid }, url:'userOneShow.jsp', type:'post', //dataType:'json', error:function(jsonData){alert('Error Loading JSON document' + jsonData);}, success:function(jsonData){ /* $.each(jsonData, function(i){ str+="用户编号:"+jsonData[i].uid+"<br>"; str+="用户名:"+jsonData[i].name+"<br>"; $.each(jsonData[i].is_manager, function(j){ str+="产品编号"+jsonData[i][j].product_id+"<br>"; }) })*/ $("#show").html(jsonData); } }) success 是有被调用的,但是jsonData就是无法输出 error 是没有被调用的
回复 点赞
kaixi_008 2014年01月29日
引用 3 楼 wgc704 的回复:
[quote=引用 2 楼 u012518995 的回复:] 生成的Json格式,看着确实有问题。。。不知道生成前是个什么结构的数据。。。
是用org.json.jar的JSONObject对象 jsonobject.put("uid", user.getId()) 然后再用jsonarray.put(jsonobject)[/quote] json格式类似于如下: 简单型:

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }
复杂型:

{ "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }, { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" }, { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" } ], "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" } ] }
你的这种类型属于复杂型延伸的一种。除了uid,看里面还有is_manager。而is_manager是个表结构。 你可以单独测试某个字段。就很容易发现问题。或者直接手写json然后赋值,先注释掉那个工具包的put,再测试测试,就很容易找到错误点。
回复 点赞
wgc704 2014年01月29日
引用 2 楼 u012518995 的回复:
生成的Json格式,看着确实有问题。。。不知道生成前是个什么结构的数据。。。
是用org.json.jar的JSONObject对象 jsonobject.put("uid", user.getId()) 然后再用jsonarray.put(jsonobject)
回复 点赞
xfroot_gmail 2014年01月29日
现在浏览器一般用自带的Json做解析 Json.Parse()
回复 点赞
kaixi_008 2014年01月29日
生成的Json格式,看着确实有问题。。。不知道生成前是个什么结构的数据。。。
回复 点赞
wgc704 2014年01月28日
该用jquery1.3 仍旧不行
回复 点赞
发动态
发帖子
JavaScript
创建于2007-09-28

5.1w+

社区成员

22.3w+

社区内容

Web 开发 JavaScript
社区公告
暂无公告