zoukankan      html  css  js  c++  java
  • WebService返回数据前台获取并处理JSON的相关问题

    起因:

      记录这个问题的起因是一次解答网友的问题,当初自己初次接触webservice时也遇到过,但在写答案时,并没有很深的印象,只是知道webservice在后台返回值的时候,那里是有个坑的。网友问的是字符转JSON怎么实现,具体问题如下:

    将ajax返回的结果

    <string>{"img":[{"ID":"0","FileUpName":"A00003.jpg","UpdateFileUpName":"","UpLoadPath":"","SavePath":"C:UsersyangjinleiDesktopimageA00003.jpg","SaveTime":"","UserId":"0"},{"ID":"0","FileUpName":"A00003.jpg","UpdateFileUpName":"","UpLoadPath":"","SavePath":"C:UsersyangjinleiDesktopimageA00003.jpg","SaveTime":"","UserId":"0"},{"ID":"0","FileUpName":"A00003.jpg","UpdateFileUpName":"","UpLoadPath":"","SavePath":"C:UsersyangjinleiDesktopimageA00003.jpg","SaveTime":"","UserId":"0"},{"ID":"0","FileUpName":"A00003.jpg","UpdateFileUpName":"","UpLoadPath":"","SavePath":"C:UsersyangjinleiDesktopimageA00003.jpg","SaveTime":"","UserId":"0"}]}</string>

    转换成JSON格式。


    过程:

      第一眼其实能看出来,这个其实就是webservice返回值是个xml格式的串,但为了快速解决问题,第一时间当然按要求来,本地测试通过后上代码:

      var str = "...";

      JSON.parse(str.substring(str.indexOf("{"),str.lastIndexOf("}")+1));

      

        然而,莫名其妙的题主那边总出问题,str.indexOf()都会报错,顿时有点懵;正好此时题主给我发了他的webservice代码,那就......第二种方案走起呗,其实第二种改法才是最有效率的,比较合乎情理的。

    改法很简单,将ajax请求的方法返回值改为void,用Context.Response.Write(json)来返回JSON数据,而不是return一个xml节点。于是,早上折腾了快一个小时,下午几分钟就完美解决完事儿。 


    总结:

      以后遇到这种json、xml混合返回的问题时

    1. 当后台代码无法修改时,那没办法,心里默默的骂句娘,然后老老实实的处理字符串吧,把json格式的字符串想办法截取出来,然后JSON.parse()转换;
    2. 能修改后台就尽量该后台代码,就换一句代码而已;

      后话:截取字符串时应该注意下原串的内容,像上面我的截图里,可以注意到,路径里的都被屏蔽了,需要提前额外处理下(replace(/\/g,"/"))。

      

      

  • 相关阅读:
    ()Python在数学建模中的简单应用
    ()Python3 列表,数组,矩阵的相互转换
    差商代微商的方法求解一阶常微分方程
    ()LaTex 论文排版(1): Win10 下 LaTex所需软件安装 (Tex live 2018 + Tex studio)
    渐进记法(O,Ω,Θ)
    定义类型别名(typedef,using)
    安装Java和Tomcat
    用PHP语言刷OJ题
    函数模板
    数组操作符
  • 原文地址:https://www.cnblogs.com/codingHeart/p/6652903.html
Copyright © 2011-2022 走看看