Webservice返回json数据格式

摘要:
当我用字符串将结果内容连接到Json数据中并返回它时,我将在结果前面添加一个xml头&lt//Tempuri。org/“>/span>生成上述数据的Web服务界面代码如下所示。///获取相关的QR码树结构///<param name=“qrCode”>产品QR码<<

问题:

我将结果内容用字符串拼接成Json数据并返回的时候,会在结果前面添加xml头部,结果如下。

  1. <span ><string xmlns="http://tempuri.org/">  
  2. {"data":[{"batchId":"B001","produceOrderId":"", "produceFactory":"","addTime":"2014/7/8 15:09:00","remark":"","parentId":""},{"batchId":"B002","produceOrderId":"生产订单2", "produceFactory":"测试公司1","addTime":"2014/7/8 8:00:00","remark":"","parentId":"B001"},{"batchId":"B003","produceOrderId":"生产订单3", "produceFactory":"测试公司2","addTime":"2014/7/8 0:00:00","remark":"","parentId":"B001"},{"batchId":"B004","produceOrderId":"生产订单4", "produceFactory":"测试公司3","addTime":"2014/7/8 0:00:00","remark":"","parentId":"B002"},{"batchId":"B005","produceOrderId":"生产订单5", "produceFactory":"测试公司4","addTime":"2014/7/8 0:00:00","remark":"","parentId":"B004"},{"batchId":"B006","produceOrderId":"生产订单6", "produceFactory":"外包公司1","addTime":"2014/7/8 0:00:00","remark":"","parentId":"B005"}]}  
  3. </string></span>  

产生如上数据的Webservice接口代码如下。

  1. <span >  [WebMethod]  
  2.     public String GetQrCodeList(String qrCode)  
  3.     {  
  4.        
  5.         return PriGetQrCodeList(qrCode);  
  6.     }  
  7.   
  8.     /// <summary>  
  9.     /// 获取关联的二维码树结构  
  10.     /// </summary>  
  11.     /// <param name="qrCode">产品二维码</param>  
  12.     /// <returns></returns>  
  13.     private String PriGetQrCodeList(String qrCode)  
  14.     {  
  15.         try  
  16.         {  
  17.             String sfull = "{{"data":[{0}]}}";  
  18.             String spart = "{{"batchId":"{0}","produceOrderId":"{1}", "produceFactory":"{2}","addTime":"{3}","remark":"{4}","parentId":"{5}"}}";  
  19.             String sData = "";  
  20.             DataTable dt = bll.GetQrCodeList(qrCode);  
  21.             if (dt == null || dt.Rows.Count == 0) return "";  
  22.             for (int i = 0; i < dt.Rows.Count; i++)  
  23.             {  
  24.                 sData += (String.Format(spart,  
  25.                     dt.Rows[i]["BatchId"].ToString(),  
  26.                     dt.Rows[i]["ProduceOrderId"].ToString(),  
  27.                     dt.Rows[i]["ProduceFactory"].ToString(),  
  28.                     dt.Rows[i]["AddTime"].ToString(),  
  29.                     dt.Rows[i]["Remark"].ToString(),  
  30.                     dt.Rows[i]["ParentId"].ToString()) + ",");  
  31.             }  
  32.             return String.Format(sfull, sData.TrimEnd(','));  
  33.         }  
  34.         catch (Exception)  
  35.         {  
  36.             return "";  
  37.         }  
  38.     }</span>  

解决方案:

改变数据的返回方式,用 Context.Response.Write代替return 语句,修改GetQrCodeList方法如下即可返回正确的Json格式数据。

  1. <span >    [WebMethod]  
  2.     public void GetQrCodeList(String qrCode)  
  3.     {  
  4.         Context.Response.Charset = "GB2312"; //设置字符集类型  
  5.         Context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");  
  6.         Context.Response.Write(PriGetQrCodeList(qrCode));  
  7.         Context.Response.End();  
  8.     }</span>  

返回结果如下:

  1. <span >{"data":[{"batchId":"B001","produceOrderId":"", "produceFactory":"","addTime":"2014/7/8 15:09:00","remark":"","parentId":""},{"batchId":"B002","produceOrderId":"生产订单2", "produceFactory":"测试公司1","addTime":"2014/7/8 8:00:00","remark":"","parentId":"B001"},{"batchId":"B003","produceOrderId":"生产订单3", "produceFactory":"测试公司2","addTime":"2014/7/8 0:00:00","remark":"","parentId":"B001"},{"batchId":"B004","produceOrderId":"生产订单4", "produceFactory":"测试公司3","addTime":"2014/7/8 0:00:00","remark":"","parentId":"B002"},{"batchId":"B005","produceOrderId":"生产订单5", "produceFactory":"测试公司4","addTime":"2014/7/8 0:00:00","remark":"","parentId":"B004"},{"batchId":"B006","produceOrderId":"生产订单6", "produceFactory":"外包公司1","addTime":"2014/7/8 0:00:00","remark":"","parentId":"B005"}]}</span>  

免责声明:文章转载自《Webservice返回json数据格式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JQuery 选择器处理特殊字符ubuntu安装中文输入法必看下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

(转)大型分布式网站架构技术总结

本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布式网站架构有很好的参考价值。   本次分享大纲如下 大型网站的特点 大型网站架构目标 大型网站架构模式 高性能架构 高可用架构 可伸缩架构 可扩展架构 安全架构 敏捷架构 大型架...

mysql主从复制延迟问题的相关知识与解决方案

一、如何监控发生了主从延迟? 在从库机器上,执行show slave status,查看Seconds_Behind_Master值,代表主从同步从库落后主库的时间,单位为秒,若同从同步无延迟,这个值为0。 Mysql主从延迟一个重要的原因之一是:mysql是以单线程串行执行。 主从复制数据时,在从服务器上的mysql,是一个线程在同步数据。 串行的方式,...

使用Cucumber+Rspec玩转BDD(7)——测试重构

使用Cucumber+Rspec玩转BDD(7)——测试重构 2009年4月5日 星期日 ### 温故知新 ###在前面的六个章节中,我们循序渐进地完善了一个用户帐号系统,这样的系统一般都会作为一个独立的模块交付。在交付这个模块之前,还需要进一步地做些重构工作。在这篇文章中,笔者将会围绕测试重构展开。源码下载:http://github.com/4...

解决ASP.NET MVC5"无法对 null 引用执行运行时绑定"

无法对 null 引用执行运行时绑定 说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 无法对 null 引用执行运行时绑定源错误:  视图,Demo....

thinkphp 验证码

在控制器中定义一个控制器,一定要开启 session class PublicAction extends Action {    public function verify()    {        session('[start]');        import('ORG.Util.Image');        Image::buildImag...

JQuery表格操作的常用技巧总结

JQuery对表格进行操作的常用技巧。 1、表格奇数行和偶数行分别添加样式  复制代码代码如下: $(function(){  $('tr:odd').addClass("odd");  $('tr:even').addClass("even");  });  不算表的头部  复制代码代码如下: $(function(){  $('tbody>...