C# DataSet转JSON
经常会遇到系统数据交互采用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 <= || metaData.Tables[].Rows.Count <= )
{
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"] = "";
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 - , ).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":"","email":null,"emailState":null,"instOrgId":null,"institue":false,"member":false,"mobile":null,"org":false,"realName":"包文强","state":"","teacher":true,"userId":121438653944262,"userType":""},"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;
}
}
以上代码是根据个人过往处理这方面问题的代码进行简单调整,也涉及到一些判断逻辑。作为参考,可以修改调整后使用。
C# DataSet转JSON的更多相关文章
- Asp.net 将DataTable 或者DataSet 转换为Json 格式
Web 开发中,将从数据库中取到的数据直接转换为 Json 格式的数据,在前台通过Ajax 无刷新显示在界面上,下面提供将DataTable 或者DataSet 转换为Json 的方法 /// < ...
- DataSet转Json 方法
防止忘记,留着备用 /// <summary> /// DATASET转JSON /// </summary> /// <param name="ds" ...
- c# DataSet转换为Json
/// <summary> /// DataSet转换为Json /// </summary> /// <param name="dataSet"&g ...
- Datatable/Dataset 转 JSON方法
当数据库表的数据在一般处理程序中查出来需要将这个表数据返回到前台的jquery中,需要将数据拼成json字符串形式,这里是将数据库数据查出放在Datatable中,然后在一般处理程序中将datatab ...
- .NET-DataTable或DataSet转JSON
通过AJAX异步减少网络内容传输,而JSON则可以把传输内容缩减到纯数据:然后利用jQuery内置的AJAX功能直接获得JSON格式的数据:在客户端直接绑定到数据控件里面,从而达到最优. #regio ...
- .NET DataTable DataSet转json代码
/// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...
- LINQ返回DataTable类型 list转dataset 转换为JSON对象
using System.Web.Script.Serialization; using System.Collections.Generic; using System.Reflection; us ...
- Delphi中DataSet和JSON的互转
//1)数据集转换为JSON字符串://需USES System.JSON; function DataSetToJson(ADataset: TDataSet): string; // [{&quo ...
- DataSet与JSON互转
DataSetConverter4Delphi https://github.com/ezequieljuliano/DataSetConverter4Delphi ----------------- ...
随机推荐
- apply_nodes_func
import torch as th import dgl g=dgl.DGLGraph() g.add_nodes(3) g.ndata["x"]=th.ones(3,4) #n ...
- Django【第21篇】:Ajax之FormData
ajax补充--------FormData等... 一.回顾上节知识点 1.什么是json字符串? 轻量级的数据交换格式 2.定时器:关于setTimeout setTimeout(foo,3000 ...
- C语言realpath
表头文件: #include <limits.h> #include <stdlib.h> 函数原型: char *realpath(const cha ...
- Spring Boot日志处理
2.4 日志处理 2.4.1 记录日志内容 请求url 访问者ip 调用方法classMethod 参数args 返回内容 2.4.2 新建包aspect,新建日志切面处理类 package com. ...
- vue根据路由判断所在的内容
1.所要实现的效果 2.利用路由来判断激活那个tab,更加准确
- Vuex-全局状态管理【传递参数】
src根目录 新建store文件夹,新建index.js 作为入口 在store文件夹中 新建modules文件夹 modules文件夹中,新建 a.js b.js 2个文件 a.js const s ...
- 2017乌鲁木齐网络赛 J题 Our Journey of Dalian Ends ( 最小费用最大流 )
题目链接 题意 : 给出一副图,大连是起点,终点是西安,要求你求出从起点到终点且经过中转点上海的最小花费是多少? 分析 : 最短路是最小费用最大流的一个特例,所以有些包含中转限制或者经过点次数有限制的 ...
- nginx修改默认运行80端口的方法
修改方法 很简单,修改nginx的配置文件, 对应的值,如图: 将其改为别的端口号,就可以了.
- nodejs工作大全
1.修改文件夹中图片的名称 var fs = require('fs');var fileDirectory = "F:\\zdw\\修改文件夹名称\\newFile";var n ...
- Solr集群环境搭建
一.准备工作 首先保证已经安装JDK工具包: [root@localhost opt]# java -version java version "1.8.0_144" Java(T ...