首页 给出  DataTable 转Json 的方法:

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

具体  转换实例:

 #region 获取我的订单
public string GetMyOrders(string _StrJson)
{
StringBuilder sbStr = new StringBuilder();
sbStr.Append("[{\"msg\":\"获取失败,参数错误。\",\"data\":\"[]\",\"state\":\"2\"}]");
try
{
CommonJsonModel oModel = new CommonJsonModel(Regex.Replace(_StrJson, @"\r\n", ""));
List<CommonJsonModel> lst = oModel.GetCollection();
foreach (CommonJsonModel item in lst)
{
//[{"_Page":"1","_PageSize":"10","_Type":"1","_Status":"0","_LoginId":"15","_Profession":"390"}]
int Page = item.GetValue("_Page") == "" ? : Convert.ToInt32(item.GetValue("_Page"));
int PageSize = item.GetValue("_PageSize") == "" ? : Convert.ToInt32(item.GetValue("_PageSize"));
int Type = item.GetValue("_Type") == "" ? : Convert.ToInt32(item.GetValue("_Type"));
int Status = item.GetValue("_Status") == "" ? : Convert.ToInt32(item.GetValue("_Status"));
int LoginId = item.GetValue("_LoginId") == "" ? : Convert.ToInt32(item.GetValue("_LoginId"));
string Profession = item.GetValue("_Profession");
StringBuilder sbSqlWhere = new StringBuilder();
sbSqlWhere.Append(" PersonIsdel=0");
if (Status > ) { sbSqlWhere.AppendFormat(" and State={0}", Status); }
if (LoginId > ) { sbSqlWhere.AppendFormat(" and AddPerson={0}", LoginId); }
if (Profession != "")
{
sbSqlWhere.AppendFormat(" and BusinessId in(select ID from TB_Business where Profession={0})", Profession);
}
StringBuilder sbFields = new StringBuilder();
sbFields.AppendFormat("*", Type);
DataSet ds = bll.GetList("TB_BusinessOrders", sbFields.ToString(), "AddTime", PageSize, Page, false, true, sbSqlWhere.ToString());
if (ds != null && ds.Tables[].Rows.Count > )
{
//第一个DataTable
DataTable dt = ds.Tables[0];
//新增一列子集
dt.Columns.Add("OrdelDetailList");
foreach (DataRow dr in dt.Rows)
35 {
36 dr["OrdelDetailList"] = GetOrderDetailList(dr["ID"].ToString());
37 }
sbStr.Clear();
//整 个DataTable转Json
string strTemp = EasyUIJsonHelper.TableToJson(ds.Tables[0]);
//去除多余的括号转义符号
40 strTemp = strTemp.Replace("\\", "");
41 strTemp = strTemp.Replace("\"[{", "[{");
42 strTemp = strTemp.Replace("}]\"", "}]");
// 完毕
sbStr.Append("[{\"msg\":\"获取成功。\",\"data\":" + strTemp + ",\"state\":\"0\"}]");
}
else
{
sbStr.Clear();
sbStr.Append("[{\"msg\":\"获取成功,无匹配数据。\",\"data\":\"[]\",\"state\":\"0\"}]");
}
}
}
catch { }
return sbStr.ToString();
} private string GetOrderDetailList(string orderId)
{
StringBuilder sbStr = new StringBuilder();
DataSet ds = new ZhouFu.Bll.TB_BusinessOrdersDetail().GetList("OrderId=" + orderId);
if (ds != null && ds.Tables[].Rows.Count > )
{
DataTable dt = ds.Tables[];
sbStr.Clear();
sbStr.Append(EasyUIJsonHelper.TableToJson(dt));
}
return sbStr.ToString();
}
#endregion

c#输出json,其中包含子json (可以含 无限级 子json)的方法思路的更多相关文章

  1. Vue+SpringBoot后端接收包含单属性和List数组的json对象

    这次主要是针对springboot后台接收的json中包含多对象(如List数组/单属性)所写的一篇文章.虽然网上类似情况很多,尝试了一个晚上,都没有解决问题,最后还是在师兄的帮助下完美解决. vue ...

  2. C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题

    C#字符串数组排序   //排序只带字符的数组,不带数字的 private   string[]   aa   ={ "a ", "c ", "b & ...

  3. C#.NET序列化XML、JSON、二进制微软自带DLL与newtonsoft(json.net)

    序列化是将对象转换成另一种格式(XML.json.二进制byte[]) JSON序列化 .NET中有三种常用的JSON序列化的类,分别是: Newtonsoft.Json.JsonConvert类(推 ...

  4. js中解析json对象:JSON.parse()用于从一个字符串中解析出json对象, JSON.stringify()用于从一个对象解析出字符串。

    JSON.parse()用于从一个字符串中解析出json对象. var str = '{"name":"huangxiaojian","age&quo ...

  5. JSON转换类(二)--List转换成Json、对象集合转换Json等

    #region List转换成Json /// <summary> /// List转换成Json /// </summary> public static string Li ...

  6. jQuery提交Json数据到Webservice,并接收返回的Json数据

    jQuery ajax webservice:get 和 post 一.GET 方式 客户端 复制代码 代码如下: var data = { classCode: "0001"}; ...

  7. java中对于JSON 的处理 fastjson gson 系统自带的JSON 的选择

    从2月初到8月末,经历了一段痛苦的经历,现在总算感觉已经走出来了,经历那事之后 感觉对人与人之间的感情看的更透了,人也没那么浮躁了: 说实话 以前从来不知道鸟叫有多好听,现在突然觉的大自然真的很美,放 ...

  8. 将一个JSON数组[{},{},{}]按一定规则合并到另一个JSON数组[{},{},{}]

    // 将一个JSON数组[{},{},{}]按一定规则合并到另一个JSON数组[{},{},{}] // Object.assign方法的第一个参数是目标对象,后面的参数都是源对象. var list ...

  9. 最近想学Json,请问大家有没有什么好的Json教程介绍一下?

    最近想学json,请问大家有没有什么好的Json教程介绍一下? 最近学完java的框架了,想了解一下json,可是找不到相关视频,请大家有这方面的Json教程好资料就介绍下啦,最后有网址链接啦. {} ...

随机推荐

  1. 手机调用系统的拍照和裁剪功能,假设界面有输入框EditText,在一些手机会出现点击EditText会弹出输入法,却不能输入的情况。

    1. 拍照裁剪后 点击EditText会弹出输入法,却不能输入.可是点击点一EdtiText就能够输入了,所以我就写了一个看不见的EdtiText,切换焦点,这样就攻克了这个奇怪的这问题,应该是and ...

  2. Android应用开发多语言drawable目录

    Android程序多语言的支持是就该Value目录不同国家的区分,前面文档有介绍相相应的国家名称Value怎样写 例如以下说下多语言图片的替换也是就该图片目录目录drawable目录例如以下: Bac ...

  3. stm32上的Lava虚拟机开发进度汇报(4)

    这段时间颓废了,基本上没在弄这个东西. 主要是因为前段时间把代码基本上写完之后,但是问题一大堆,除了自己写的几个简单测试程序,其他现成的东西没有一个是能正常运行的,很是郁闷,也不知道哪里有错误,所以放 ...

  4. BZOJ 1051: [HAOI2006]受欢迎的牛 缩点

    1051: [HAOI2006]受欢迎的牛 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  5. android UI进阶之实现listview的下拉加载

    关于listview的操作五花八门,有下拉刷新,分级显示,分页列表,逐页加载等,以后会陆续和大家分享这些技术,今天讲下下拉加载这个功能的实现. 最初的下拉加载应该是ios上的效果,现在很多应用如新浪微 ...

  6. 统计0到n之间1的个数

    问题描写叙述 给定一个十进制整数N,求出从1到N的全部整数中出现"1"的个数. 比如:N=2时 1,2出现了1个 "1" . N=12时 1,2,3,4,5,6 ...

  7. Metadata Lock原理8

    http://www.kancloud.cn/taobaomysql/monthly/67141 MySQL· 5.7优化·Metadata Lock子系统的优化 背景 引入MDL锁的目的,最初是为了 ...

  8. ireport启动闪退问题

    安装好ireport之后,双击ireport.exe启动程序只是掠过启动画面便毫无反应, 后来在网上找了下解决方法,才知道只因为ireport与jdk8不兼容, 于是下载了jdk6,并在ireport ...

  9. C++编译器默默编写并调用哪些函数

    什么时候empty class(空类)不再是个empty class呢?当C++处理过它之后,是的,如果你自己没有声明,编译器就会为它声明(编译器版本)一个copy构造函数.一个copy assign ...

  10. 线程控制之线程和I/O

    http://www.cnblogs.com/nufangrensheng/p/3498723.html中介绍了pread和pwrite函数,这些函数在多线程环境下是非常有帮助的,因为进程中的所有线程 ...