c#输出json,其中包含子json (可以含 无限级 子json)的方法思路

首页 给出  DataTable 转Json 的方法:

 1    public static string TableToJson(DataTable dt)
 2         {
 3             List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
 4             foreach (DataRow dr in dt.Rows)//每一行信息,新建一个Dictionary<string,object>,将该行的每列信息加入到字典
 5             {
 6                 Dictionary<string, object> result = new Dictionary<string, object>();
 7                 foreach (DataColumn dc in dt.Columns)
 8                 {
 9                     result.Add(dc.ColumnName, dr[dc].ToString());
10                 }
11                 list.Add(result);
12             }
13             return ToJson(list);//调用Serializer方法 
14         }
 1   /// <summary>
 2         /// 将集合转换为json
 3         /// </summary>
 4         /// <param name="d"></param>
 5         /// <returns></returns>
 6         public static string ToJson(object d)
 7         {
 8             JavaScriptSerializer jss = new JavaScriptSerializer();
 9             return jss.Serialize(d);
10         }

 

具体  转换实例:

 1 #region 获取我的订单
 2         public string GetMyOrders(string _StrJson)
 3         {
 4             StringBuilder sbStr = new StringBuilder();
 5             sbStr.Append("[{\"msg\":\"获取失败,参数错误。\",\"data\":\"[]\",\"state\":\"2\"}]");
 6             try
 7             {
 8                 CommonJsonModel oModel = new CommonJsonModel(Regex.Replace(_StrJson, @"\r\n", ""));
 9                 List<CommonJsonModel> lst = oModel.GetCollection();
10                 foreach (CommonJsonModel item in lst)
11                 {
12                     //[{"_Page":"1","_PageSize":"10","_Type":"1","_Status":"0","_LoginId":"15","_Profession":"390"}]
13                     int Page = item.GetValue("_Page") == "" ? 1 : Convert.ToInt32(item.GetValue("_Page"));
14                     int PageSize = item.GetValue("_PageSize") == "" ? 10 : Convert.ToInt32(item.GetValue("_PageSize"));
15                     int Type = item.GetValue("_Type") == "" ? 0 : Convert.ToInt32(item.GetValue("_Type"));
16                     int Status = item.GetValue("_Status") == "" ? 0 : Convert.ToInt32(item.GetValue("_Status"));
17                     int LoginId = item.GetValue("_LoginId") == "" ? 0 : Convert.ToInt32(item.GetValue("_LoginId"));
18                     string Profession = item.GetValue("_Profession");
19                     StringBuilder sbSqlWhere = new StringBuilder();
20                     sbSqlWhere.Append(" PersonIsdel=0");
21                     if (Status > 0) { sbSqlWhere.AppendFormat(" and State={0}", Status); }
22                     if (LoginId > 0) { sbSqlWhere.AppendFormat(" and AddPerson={0}", LoginId); }
23                     if (Profession != "")
24                     {
25                         sbSqlWhere.AppendFormat(" and BusinessId in(select ID from TB_Business where Profession={0})", Profession);
26                     }
27                     StringBuilder sbFields = new StringBuilder();
28                     sbFields.AppendFormat("*", Type);
29                     DataSet ds = bll.GetList("TB_BusinessOrders", sbFields.ToString(), "AddTime", PageSize, Page, false, true, sbSqlWhere.ToString());
30                     if (ds != null && ds.Tables[0].Rows.Count > 0)
31                     {
//第一个DataTable
32 DataTable dt = ds.Tables[0];
//新增一列子集
33 dt.Columns.Add("OrdelDetailList"); 34 foreach (DataRow dr in dt.Rows) 35 { 36 dr["OrdelDetailList"] = GetOrderDetailList(dr["ID"].ToString()); 37 } 38 sbStr.Clear();
//整 个DataTable转Json
39 string strTemp = EasyUIJsonHelper.TableToJson(ds.Tables[0]);
//去除多余的括号转义符号 40 strTemp = strTemp.Replace("\\", ""); 41 strTemp = strTemp.Replace("\"[{", "[{"); 42 strTemp = strTemp.Replace("}]\"", "}]");

// 完毕
43 sbStr.Append("[{\"msg\":\"获取成功。\",\"data\":" + strTemp + ",\"state\":\"0\"}]"); 44 } 45 else 46 { 47 sbStr.Clear(); 48 sbStr.Append("[{\"msg\":\"获取成功,无匹配数据。\",\"data\":\"[]\",\"state\":\"0\"}]"); 49 } 50 } 51 } 52 catch { } 53 return sbStr.ToString(); 54 } 55 56 private string GetOrderDetailList(string orderId) 57 { 58 StringBuilder sbStr = new StringBuilder(); 59 DataSet ds = new ZhouFu.Bll.TB_BusinessOrdersDetail().GetList("OrderId=" + orderId); 60 if (ds != null && ds.Tables[0].Rows.Count > 0) 61 { 62 DataTable dt = ds.Tables[0]; 63 sbStr.Clear(); 64 sbStr.Append(EasyUIJsonHelper.TableToJson(dt)); 65 } 66 return sbStr.ToString(); 67 } 68 #endregion

 

转载于:https://www.cnblogs.com/jiebo/p/4300883.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用C# Newtonsoft Json通过json数据,解码json生成用于保存数据类json类,通过json生成类代码,支持类 自动 如 [{"itemsize":437,"pageId":1,"erpNickShopObj":null,"itemjbxx":[{"num":94628,"numIid":40239293981,"outerId":"异常1元连接","picUrl":"http://img04.taobaocdn.com/bao/uploaded/i4/TB1rdpFGXXXXXc5XFXXXXXXXXXX_!!1-item_pic.gif","price":"1.00","title":"[Enni.kr]<恩妮韩品>补邮费/订单异常关闭专拍连接","volume":0},{"num":65592,"numIid":36048181106,"outerId":"爱茉莉沐浴露套装200ml*3","picUrl":"http://img03.taobaocdn.com/bao/uploaded/i3/516137599/TB21kzXXVXXXXcUXXXXXXXXXXXX_!!516137599.jpg","price":"52.00","title":"韩国进口爱茉莉happybath 沐浴露 柠檬 玫瑰 薰衣草 200ml*3套装","volume":0},{"num":59765,"numIid":38272119734,"outerId":"7难题牙膏 绿款","picUrl":"http://img01.taobaocdn.com/bao/uploaded/i1/516137599/TB2xDbXXVXXXXbbXXXXXXXXXXXX_!!516137599.jpg","price":"9.90","title":"韩国进口LG贝瑞奥/倍瑞奥7难题解决牙膏7功能合一强健120G绿色","volume":0},{"num":59764,"numIid":38288409657,"outerId":"黄金皂2件套礼盒","picUrl":"http://img04.taobaocdn.com/bao/uploaded/i4/516137599/TB2XBbXXVXXXXbKXXXXXXXXXXXX_!!516137599.jpg","price":"90.00","title":"包邮 韩国纯金皂 24K金美容皂 天然特效美容黄金皂 2件套装 礼盒","volume":0},{"num":59763,"numIid":38272395230,"outerId":"7难题牙膏 蓝款","picUrl":"http://img02.taobaocdn.com/bao/uploaded/i2/516137599/TB204vXXVXXXXa5XpXXXXXXXXXX_!!516137599.jpg","price":"9.90","title":"韩国LG 贝瑞奥/倍瑞奥7难题解决牙膏 7功能合一 原味 120G 蓝色","volume":0},{"num":59758,"numIid":38278150798,"outerId":"9928牙膏绿色款","picUrl":"http://img03.taobaocdn.com/bao/uploaded/i3/516137599/TB2KDDXXVXXXXaEXXXXXXXXXXXX_!!516137599.jpg","price":"9.90","title":"韩国 LG贝瑞奥/倍瑞奥9928牙膏 强齿美白牙膏 120G 绿色","volume":0},{"num":59751,"numIid":38288605749,"outerId":"9928牙膏蓝色款","picUrl":"http://img04.taobaocdn.com/bao/uploaded/i4/516137599/TB2n9HXXVXXXXbxXXXXXXXXXXXX_!!516137599.jpg","price":"9.90","title":"韩国 LG 倍瑞奥 9928 牙膏 抗菌 牙龈护理 防蛀牙固定牙齿 120g","volume":0},{"num":59741,"numIid":38301128090,"outerId":"9928牙膏红色款","picUrl":"http://img01.taobaocdn.com/bao/uploaded/i1/516137599/TB2PATXXVXXXXcHXXXXXXXXXXXX_!!516137599.jpg","price":"9.90","title":"韩国 LG贝瑞奥/倍瑞奥9928牙膏 消炎

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值