加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService返回DataSet,Xml,Json

发布时间:2020-12-16 22:52:31 所属栏目:安全 来源:网络整理
导读:#region 返回DataSet [WebMethod] public DataSet GetAllDepTra_DataSet() { DataTable dt = commonService.GetAllDepTra(); DataSet ds = new DataSet(); ds.Tables.Add(dt); return ds; } #endregion #region 返回Xml [WebMethod] public XmlElement GetAl
        #region 返回DataSet
        [WebMethod]
        public DataSet GetAllDepTra_DataSet()
        {
            DataTable dt = commonService.GetAllDepTra();
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            return ds;
        }
        #endregion
        #region 返回Xml
        [WebMethod]
        public XmlElement GetAllDepTra_XElement()
        {
            DataTable dt = commonService.GetAllDepTra();

            #region 方法一
            //XElement result = new XElement("Result");
            //XElement search = new XElement("Accounts");

            //if (dt.Rows.Count > 0)
            //{

            //    search.Add(
            //        from d in dt.AsEnumerable()
            //        select new XElement(
            //            "Account"
            //,new XElement("name",d.Field<string>("名称"))

            //            ));
            //    search.Add(
            //        new XElement("count",dt.Rows.Count)
            //        );
            //}
            //result.Add(search);
            //XmlDocument doc = new XmlDocument();
            //doc.LoadXml(result.ToString(SaveOptions.DisableFormatting));
            //return doc.DocumentElement;
            #endregion

            #region 方法二 直接将DataTable转化为xml
            dt.TableName = "Test";
            XmlSerializer xmlSerial = new XmlSerializer(typeof(DataTable));
            StringWriter sw = new StringWriter();
            xmlSerial.Serialize(sw,dt); // 序列化table

            string ss = sw.ToString();
            XmlDocument dom = new XmlDocument();

            dom.LoadXml(ss);
            XmlElement root = dom.DocumentElement;
            return root;
            #endregion

        }
        #endregion
        #region 返回Json
        [WebMethod]
        public string GetAllDepTra_Json()
        {
            DataTable dt = commonService.GetAllDepTra();

            StringBuilder jsonString = new StringBuilder();
            jsonString.Append("[");
            DataRowCollection drc = dt.Rows;
            for (int i = 0; i < drc.Count; i++)
            {
                jsonString.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    string strKey = dt.Columns[j].ColumnName;
                    string strValue = drc[i][j].ToString();
                    Type type = dt.Columns[j].DataType;
                    jsonString.Append(""" + strKey + "":");
                    strValue = StringFormat(strValue,type);
                    if (j < dt.Columns.Count - 1)
                    {
                        jsonString.Append(strValue + ",");
                    }
                    else
                    {
                        jsonString.Append(strValue);
                    }
                }
                jsonString.Append("},");
            }
            jsonString.Remove(jsonString.Length - 1,1);
            jsonString.Append("]");
            return jsonString.ToString();

        }

        /// <summary>
        /// 过滤特殊字符
        /// </summary>
        /// <param name="s">字符串</param>
        /// <returns>json字符串</returns>
        private static string String2Json(String s)
        {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < s.Length; i++)
            {
                char c = s.ToCharArray()[i];
                switch (c)
                {
                    case '"':
                        sb.Append("""); break;
                    case '':
                        sb.Append("\"); break;
                    case '/':
                        sb.Append("/"); break;
                    case 'b':
                        sb.Append("b"); break;
                    case 'f':
                        sb.Append("f"); break;
                    case 'n':
                        sb.Append("n"); break;
                    case 'r':
                        sb.Append("r"); break;
                    case 't':
                        sb.Append("t"); break;
                    default:
                        sb.Append(c); break;
                }
            }
            return sb.ToString();
        }
        /// <summary>
        /// 格式化字符型、日期型、布尔型
        /// </summary>
        /// <param name="str"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        private static string StringFormat(string str,Type type)
        {
            if (type == typeof(string))
            {
                str = String2Json(str);
                str = """ + str + """;
            }
            else if (type == typeof(DateTime))
            {
                str = """ + str + """;
            }
            else if (type == typeof(bool))
            {
                str = str.ToLower();
            }
            else if (type != typeof(string) && string.IsNullOrEmpty(str))
            {
                str = """ + str + """;
            }
            return str;
        }
        #endregion
<pre name="code" class="csharp">个人还是比较倾向于Json的写法,在调用该方法时也方便使用返回结果。


Json返回结果如下:

{

? ? [
? ? ? ? {
? ? ? ? ? ? "名称": "tesrt",
? ? ? ? ? ? "负责人ID": b9d6f057-ca4e-e411-a8d9-b82a72d5a332,
? ? ? ? ? ? "培训摘要": "asdf",
? ? ? ? ? ? "创建时间": "2015/3/16 3:23:57"
? ? ? ? }
]
}
 
</pre><pre code_snippet_id="661220" snippet_file_name="blog_20150507_7_8019957" name="code" class="csharp">

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读