解析json问题

bhinas 2012-12-05 10:25:56
现在我服务器端给我的客户端返回一段json是这样的
{"result":"success",
"building":[{"id":"4028d3f23b1b70a3013b1b7710bb0002","building_num":"五号楼"}, {"id":"4028d3f63addcc95013addd69bd50007","building_num":"一号楼"}]}

即一个字符串和一个building对象,现在这个result能得到,building怎么在客户端获取?直接获取获取不到!想截取json字符串但是json格式不支持substr方法。
...全文
244 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
温柔哥 2012-12-06
  • 打赏
  • 举报
回复
你用dataType:‘text’, 返回一个标准的json 当然不可能走进success。 直接改成json 返回的json, 用 data.building 就能获取到 不过是个数组,还得继续遍历。
bhinas 2012-12-06
  • 打赏
  • 举报
回复
引用 12 楼 showbo 的回复:
引用 10 楼 xiaokui008 的回复:引用 8 楼 showbo 的回复:楼主真能搞,还substring,直接操作json对象不就行了。 JavaScript code?12345678910111213$.ajax({ type : "POST", url : "/work/housesource/findBuildingByPoint.……
我贴出来的就是 debug出来的呀!
Go 旅城通票 2012-12-05
  • 打赏
  • 举报
回复
楼主真能搞,还substring,直接操作json对象不就行了。
$.ajax({
     type : "POST",
     url : "/work/housesource/findBuildingByPoint.do?id="+pointId,
     dataType : "json",////
     success : function(data) {
                // var strbuilding = data.substring(31,data.length - 1);
                // alert(strbuilding);
                // var arr = eval('('+strbuilding+')');
arr=data.building///////////
                 for(var i=0;i<arr.length;i++){
                    alert(arr[i].id);
                    alert(arr[i].building_num);
                  }
bhinas 2012-12-05
  • 打赏
  • 举报
回复
引用 6 楼 charrys 的回复:
..自己分割。怎么会不支持。我做过类似的处理。如果是跨域的话会有点麻烦
我用的是jquery方式解析的,刚发现jquery会把json格式解析成Object!当然不支持截取字符串类型了!自己犯2了,谢谢上面回答问题的亲。这个var obj = eval("(" + json + ")");函数是把字符串解析成json形式的,也就是对象形式的,显然也不行。 这个我自己解决了,用jquery传回来的json都是object,所以不可能同时传字符串和对象!我传回来的格式改为text了,截取到json需要的字符串之后,又把字符串转换为json格式了,这些就能遍历传回来的对象值了! $.ajax({ type : "POST", url : "/work/housesource/findBuildingByPoint.do?id="+pointId, dataType : "text", success : function(data) { var strbuilding = data.substring(31,data.length - 1); alert(strbuilding); var arr = eval('('+strbuilding+')'); for(var i=0;i<arr.length;i++){ alert(arr[i].id); alert(arr[i].building_num); }
86y 2012-12-05
  • 打赏
  • 举报
回复
..自己分割。怎么会不支持。我做过类似的处理。如果是跨域的话会有点麻烦
bhinas 2012-12-05
  • 打赏
  • 举报
回复
引用 1 楼 charrys 的回复:
只能用split截取了。
json对象也不支持这个方法!
frog8659 2012-12-05
  • 打赏
  • 举报
回复

var obj = eval("(" + json + ")");
var result = obj.result;
var building = obj.building
yibey 2012-12-05
  • 打赏
  • 举报
回复

var json = eval("("+str+")");
十一文 2012-12-05
  • 打赏
  • 举报
回复
eval成对象 然后直接就可以获取到属性
86y 2012-12-05
  • 打赏
  • 举报
回复
只能用split截取了。
jasonlee0927 2012-12-05
  • 打赏
  • 举报
回复
如果返回的是json格式字符串的话,用jQuery解析好像要用var result = jQuery.parseJSON(data.d),这样转换出来的就是一个完整的json对象,然后你就可以用result.building获取到building这个数组。

 success : function(data){
              var result = jQuery.parseJSON(data.d);
              var arr = result.buiding;
              var len = arr.length;
              for (var i=0;i<len;i++)
              {
                  alert(arr[i].id);
                  alert(arr[i].building_num);
              }
Go 旅城通票 2012-12-05
  • 打赏
  • 举报
回复
引用 10 楼 xiaokui008 的回复:
引用 8 楼 showbo 的回复:楼主真能搞,还substring,直接操作json对象不就行了。 JavaScript code?12345678910111213$.ajax({ type : "POST", url : "/work/housesource/findBuildingByPoint.do?id="+pointId, da……
就你贴出来的代码是标准json格式,不会不执行success回调的,只能说是实际返回的格式有问题。 增加error回调输出返回了什么内容
$.ajax({
     type : "POST",
     url : "/work/housesource/findBuildingByPoint.do?id="+pointId,
     dataType : "json",////
error:function(xhr){alert('出错了\n'+xhr.responseText)},///////
     success : function(data) {
                // var strbuilding = data.substring(31,data.length - 1);
                // alert(strbuilding);
                // var arr = eval('('+strbuilding+')');
arr=data.building///////////
                 for(var i=0;i<arr.length;i++){
                    alert(arr[i].id);
                    alert(arr[i].building_num);
                  }
bhinas 2012-12-05
  • 打赏
  • 举报
回复
引用 9 楼 xingfuzhuzi1314 的回复:
引用 8 楼 showbo 的回复:楼主真能搞,还substring,直接操作json对象不就行了。 JavaScript code?12345678910111213$.ajax({ type : "POST", url : "/work/housesource/findBuildingByPoint.do?id="+pointId, da……
+100 你看看我返回来的字符串在+1,直接以json形式返回来jquery解析会有问题,根本不会到success:这一步!!!!!!!!!!
bhinas 2012-12-05
  • 打赏
  • 举报
回复
引用 8 楼 showbo 的回复:
楼主真能搞,还substring,直接操作json对象不就行了。 JavaScript code?12345678910111213$.ajax({ type : "POST", url : "/work/housesource/findBuildingByPoint.do?id="+pointId, dataType : "json",//……
获取不到,自己试试去,看看有什么问题。
xingfuzhuzi1314 2012-12-05
  • 打赏
  • 举报
回复
引用 8 楼 showbo 的回复:
楼主真能搞,还substring,直接操作json对象不就行了。 JavaScript code?12345678910111213$.ajax({ type : "POST", url : "/work/housesource/findBuildingByPoint.do?id="+pointId, dataType : "json",//……
+1,直接返回json对象之后,可以根据data.building来获取你{}里面的属性,之后再遍历就行!

87,919

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧