1. 程式人生 > >C# WebService中將集合資料轉化為字串(json,xml )的方式

C# WebService中將集合資料轉化為字串(json,xml )的方式

在寫webservice的時候需要將從資料庫中查詢出的資料(各種集合)轉化為json字串。
如果在取出集合後再對集合進行遍歷,拼接成xml就太麻煩了。
所以首先介紹一下通過標準方法自動轉為json字串。
方法一:
首先需要引入:Newtonsoft.Json.dl (下載地址在我個人上傳的資源中有,可以檢視下載)
之後新增引用: using Newtonsoft.Json;
轉化時的程式碼如下:

RetrieveMultipleRequest fetchRequest1 = new RetrieveMultipleRequest
                {
                    Query = new
FetchExpression(fetchXml) }; //執行fetchXml EntityCollection returnCollection = ((RetrieveMultipleResponse)webService.GetOrgServiceByUserPwd(userName, pwd).Execute(fetchRequest1)).EntityCollection; //轉換為JDSON(將查詢到的集合轉為Json) jsonString = JsonConvert.SerializeObject(returnCollection);

直接將jsonString返回就可以了,這樣其他呼叫該介面的方法自動解析就好了。

如果不用這種方法的話也可以
方法二:將集合轉化為xml字串

   /// <summary>
        /// 獲取機構列表
        /// </summary>
        /// <param name="PageIndex">頁數</param>
        /// <param name="PageSize">每頁條數</param>
        /// <returns>XML</returns>
        [WebMethod]
        public XmlElement GetAllAccount
(int PageIndex, int PageSize, string doUsername, string type, string name, int codetype) { XElement result = new XElement("Result"); XElement seach = new XElement("Accounts"); DataTable DTAccount = bf.getAllAccountList(doUsername, type, name, codetype); DataTable acc = bf.GetPagedTable(DTAccount, PageIndex, PageSize); if (acc.Rows.Count > 0) { seach.Add( from d in acc.AsEnumerable() select new XElement("Account", new XElement("Name", d.Field<string>("Name")), new XElement("AccountId", d.Field<Guid>("AccountId").ToString()), new XElement("Type", d.Field<string>("new_accounttype")), new XElement("Area", d.Field<string>("TerritoryIdName")) )); seach.Add(new XElement("Count", DTAccount.Rows.Count)); } else { seach.Add(new XElement("Return", 0)); } result.Add(seach); XmlDocument doc = new XmlDocument(); doc.LoadXml(result.ToString(SaveOptions.DisableFormatting)); return doc.DocumentElement; }

其中第一種方法將從資料庫中查詢出的資料直接轉化,這樣的話資料會比較亂,但是對於webService的開發者而言則比較容易,因為直接轉化就可以了。
第二種方法返回的資料結構上比較工整,方便其他人員呼叫,但是對於webService的開發者而言則工作量大一些。