经常会遇到系统数据交互采用JSON数据格式进行交互的,避免不必要的重复工作,记录下自己的处理方式。

获取数据集之后,通过函数对数据集信息进行整理通过.Net Framework3.5提出的JavaScriptSerializer类进行DataSet数据的序列化,

需要添加System.Web.Extensions引用:

 private static string DataToJson(DataSet metaData,string msg){            DataTable resultInfo = new DataTable("success");resultInfo.Columns.Add("RETURN_CODE", Type.GetType("System.String"));resultInfo.Columns.Add("ERROR_MSG", Type.GetType("System.String"));DataRow newRow = resultInfo.NewRow();if (metaData == null || metaData.Tables.Count <= 0 || metaData.Tables[0].Rows.Count <= 0){newRow["RETURN_CODE"] = "-1";if (string.IsNullOrEmpty(msg)){newRow["ERROR_MSG"] = "查询结果为空";}else{newRow["ERROR_MSG"] = msg;}resultInfo.Rows.Add(newRow);metaData.Tables.Add(resultInfo);}else{newRow["RETURN_CODE"] = "0";newRow["ERROR_MSG"] = "";resultInfo.Rows.Add(newRow);metaData.Tables.Add(resultInfo);}StringBuilder sb = new StringBuilder();sb.Append("{");JavaScriptSerializer serializer = new JavaScriptSerializer();foreach (DataTable dt in metaData.Tables){sb.Append(string.Format("\"{0}\":",dt.TableName));ArrayList arrayList=new ArrayList();foreach (DataRow dataRow in dt.Rows){Dictionary<string, object> dictionary = new Dictionary<string, object>();foreach (DataColumn dataColumn in dt.Columns){dictionary.Add(dataColumn.ColumnName,dataRow[dataColumn.ColumnName]);}arrayList.Add(dictionary);}sb.Append(serializer.Serialize(arrayList));sb.Append(",");}return sb.Remove(sb.Length - 1, 1).Append("}").ToString();}

  此时我们获取了一个JSON格式的字符串,在接收方同样可以通过JavaScriptSerializer将字符串转换为自己需要的数据格式如ArrayList:

        private ArrayList JsonToList(string json){JavaScriptSerializer serializer = new JavaScriptSerializer();Dictionary<string,object> dictionary= serializer.Deserialize<Dictionary<string,object>>(json);return (ArrayList)dictionary["data"];}

也可以将JSON转换为对象:

internal bool ValidateWebJsonValues(ref UserInfo userInfo, string userName, string passWord){try{string json = "{"data":{"accounts":null,"delFlag":"0","email":null,"emailState":null,"instOrgId":null,"institue":false,"member":false,"mobile":null,"org":false,"realName":"包文强","state":"0","teacher":true,"userId":121438653944262,"userType":"2"},"success":true}";JavaScriptSerializer jsSerializer = new JavaScriptSerializer();Dictionary<string, object> dic = jsSerializer.Deserialize<Dictionary<string, object>>(json);bool dataResult = (bool)dic["success"];if (dataResult){Dictionary<string, object> dataDic = (Dictionary<string, object>)dic["data"];Type type = typeof(UserInfo);PropertyInfo[] propInfo = type.GetProperties();foreach (PropertyInfo prop in propInfo){if (dataDic[prop.Name] != null){prop.SetValue(userInfo, dataDic[prop.Name], null);}else{prop.SetValue(userInfo, "", null);}}}return dataResult;}catch (Exception ex){return false;}}

以上代码是根据个人过往处理这方面问题的代码进行简单调整,也涉及到一些判断逻辑。作为参考,可以修改调整后使用。

转载于:https://www.cnblogs.com/ultimateWorld/p/6062303.html

C# DataSet转JSON相关推荐

  1. dataset转换json格式

    转换json方法 public static string DataToJson(DataSet dt) { StringBuilder jsonBuilder = new StringBuilder ...

  2. Datatable/Dataset 转 JSON方法

    当数据库表的数据在一般处理程序中查出来需要将这个表数据返回到前台的jquery中,需要将数据拼成json字符串形式,这里是将数据库数据查出放在Datatable中,然后在一般处理程序中将datatab ...

  3. JsonHelper Json转xml,Json转DataSet,DataSet转Json

    2019独角兽企业重金招聘Python工程师标准>>> using System; using System.Collections.Generic; using System.Da ...

  4. COCO Dataset person_keypoints.json 解析

    DataSet COCO json--person_keypoints person_keypoins.json 结构 one image person_keypoint.json keypoint ...

  5. [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)...

    点击下载 ConvertJson.rar 本类实现了  C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json| 等功能 大 ...

  6. 使用labelme标记图片、json批量转dataset的解决方案以及一些问题解决方案

    环境:win10+anaconda(python3.7) labelme 的安装 labelme的安装十分简单,只需要三行代码(首先打开anaconda prompt): conda create - ...

  7. 【C#公共帮助类】JsonHelper 操作帮助类, 以后再也不用满地找Json了,拿来直接用...

     四个主要操作类:JsonConverter .JsonHelper .JsonSplit .AjaxResult 一.JsonConverter: 自定义查询对象转换动态类.object动态类转换j ...

  8. .net Json JavaScriptSerializer JsonHelper类

    结合.net 的JavaScriptSerializer 类实现Json数据处理 调用1: Model.Users m = BLL.UsersBLL.GetUserById(Convert.ToInt ...

  9. Yelp Dataset(Yelp业务-评论-用户数据集)

    原文: Yelp Dataset A trove of reviews, businesses, users, tips, and check-in data. This dataset is a s ...

最新文章

  1. 记一次Linux系统内存占用较高得排查
  2. 形状变化html,图形变换的三种方式是什么?
  3. Elasticsearch Top 51 重中之重面试题及答案
  4. 中国蒸汽拖把行业竞争状况分析及十四五发展趋势研究报告2021年版
  5. OpencvSharp的踩坑之路
  6. ora-01092: oracle 实例终止.强制断开连接,undo表空间故障特殊恢复(二)------ORA-01092: ORACLE 实例终止。强制断开连接...
  7. ORA-12514: TNS:监听程序当前无法识别连接描述符中请(转)
  8. 拖拽功能 php,基于Vue实现拖拽功能
  9. void readstring( char s[] ); 怎样_char *s和char s[]
  10. 【英语学习】【English L06】U07 Jobs L1 A computer programmer
  11. VsCode配置Java环境
  12. 百度网盘分享无提取码文件的方法
  13. Roguelike到底是啥?讲讲和Roguelike 相关知识(搬运)
  14. 其实EXCEL也是一个很好的管理程序开发工具
  15. Softing pnGate系列网关:将PROFIBUS总线集成到PROFINET网络
  16. 光学中你遇到过哪些问题?
  17. 用灭点法提取的深度图
  18. 神州战神系列装系统过程,其他电脑大同小异
  19. 青岛租房 不知道租哪儿,手动做的租房地图。
  20. 594. 最长和谐子序列--Python

热门文章

  1. mysql全套基础知识_Mysql基础知识整理
  2. html插入flash代码_初学者必备Web开发APP,支持代码补全,一键插入代码,厉害了!...
  3. ES6(三)——Set、WeakSet、Map、WeakMap
  4. 二、mongodb数据库系列——聚合操作 索引操作 权限管理
  5. LeetCode 2134. 最少交换次数来组合所有的 1 II(数组*2 + 滑动窗口)
  6. LeetCode 1671. 得到山形数组的最少删除次数(最长上升子序DP nlogn)
  7. LeetCode 268. 缺失数字
  8. 如何通过像素点找到世界坐标_如何通过阅读来找到自己理论研究的“视域”?...
  9. python中的下标索引
  10. 卖萌屋学术站开放注册啦!寻募种子用户,超多特权放出!