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 ----------------- ...
随机推荐
- Sublime3 配置node.js 环境 The process "node.exe" not found
配置中文显示调试结果 [下载地址](https://github.com/tanepiper/SublimeText-Nodejs) 1. 到上述地址下载压缩文件 2.将文件解压到sublime的插件 ...
- canvas在图片上生成文字
newImage(text) { // 生成图片 var imageBox = document.getElementById(&quo ...
- java Collections.binarySearch 用法
package testCollections; import java.util.ArrayList;import java.util.Collections;import java.util.Co ...
- 使用IDEA连接mysql数据库
1.IDEA配置数据库连接 2.添加数据库: 3.填写数据库信息: database输入框里面填写要连接的数据库名称 然后点击test connection,会弹出一个框,提示下载驱动,点击进行下载即 ...
- 基于BootStrap的分页代码实现
public class PageUtil { //targetUrl 访问url totalNum总记录数 currentPage 当前页数 pageSize每页的大小 public static ...
- java.lang.OutOfMemoryError:GC overhead limit exceeded解决方
Tomcat异常信息: Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit excee ...
- Model 层
package com.test.mvp.mvpdemo.mvp.v1.model; import com.test.mvp.mvpdemo.mvp.v1.MainContract; import o ...
- HTML5和CSS3兼容清单
1.CSS3 2.CSS3选择器 3.HTML5 4.HTML5 From
- Java中的BigDecimal类和int和Integer总结
前言 我们都知道浮点型变量在进行计算的时候会出现丢失精度的问题.如下一段代码: System.out.println(0.05 + 0.01); System.out.println(1.0 - 0. ...
- ORACLE Physical Standby 级联备库搭建
搭建oracle 级联DG 现有架构:physical standby 一主二备,在此基础上,在主库下新建备库standby3.级联备库cascade 数据库版本 11.2.0.4 db_name=p ...