WebService返回数据前台获取并处理JSON的相关问题
起因:
记录这个问题的起因是一次解答网友的问题,当初自己初次接触webservice时也遇到过,但在写答案时,并没有很深的印象,只是知道webservice在后台返回值的时候,那里是有个坑的。网友问的是字符转JSON怎么实现,具体问题如下:
将ajax返回的结果:
<string>{"img":[{"ID":"0","FileUpName":"A00003.jpg","UpdateFileUpName":"","UpLoadPath":"","SavePath":"C:\Users\yangjinlei\Desktop\image\A00003.jpg","SaveTime":"","UserId":"0"},{"ID":"0","FileUpName":"A00003.jpg","UpdateFileUpName":"","UpLoadPath":"","SavePath":"C:\Users\yangjinlei\Desktop\image\A00003.jpg","SaveTime":"","UserId":"0"},{"ID":"0","FileUpName":"A00003.jpg","UpdateFileUpName":"","UpLoadPath":"","SavePath":"C:\Users\yangjinlei\Desktop\image\A00003.jpg","SaveTime":"","UserId":"0"},{"ID":"0","FileUpName":"A00003.jpg","UpdateFileUpName":"","UpLoadPath":"","SavePath":"C:\Users\yangjinlei\Desktop\image\A00003.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混合返回的问题时
- 当后台代码无法修改时,那没办法,心里默默的骂句娘,然后老老实实的处理字符串吧,把json格式的字符串想办法截取出来,然后JSON.parse()转换;
- 能修改后台就尽量该后台代码,就换一句代码而已;
后话:截取字符串时应该注意下原串的内容,像上面我的截图里,可以注意到,路径里的\都被屏蔽了,需要提前额外处理下(replace(/\\/g,"/"))。
posted on 2017-04-01 09:57 codingHeart 阅读(4297) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?