将json字符串反序列化为DataTable 对JsonConvert的补充

/// <summary>
/// 扩展方法,将一个Json字符串反序列化为DataTable
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="str"></param>
/// <returns>DataTable</returns>
public static DataTable DerializeToDataTable<T>(this string str)
{
DataTable dt = new DataTable();
if (str[0] == ‘[‘)//如果str的第一个字符是‘[‘,则说明str里存放有多个model数据
{
//删除最后一个‘]‘和第一个‘[‘,顺序不能错。不然字符串的长度就不对了。
//因为每个model与model之间是用 ","分隔的,所以改为用 ";"分隔
str = str.Remove(str.Length - 1, 1).Remove(0, 1).Replace("},{", "};{");
}
JavaScriptSerializer js = new JavaScriptSerializer();
string[] items = str.Split(‘;‘);//用";"分隔开多条数据
foreach (PropertyInfo property in typeof(T).GetProperties())//反射,获得T类型的所有属性
{
//创建一个新列,列名为属性名,类型为属性的类型。
DataColumn col = new DataColumn(property.Name, property.PropertyType);
dt.Columns.Add(col);
}

//循环,一个一个的反序列化
for (int i = 0; i < items.Length; i++)
{
//创建新行
DataRow dr = dt.NewRow();

//反序列化为一个T类型对象
T temp = js.Deserialize<T>(items[i]);
foreach (PropertyInfo property in typeof(T).GetProperties())
{
//赋值
dr[property.Name] = property.GetValue(temp, null);
}
dt.Rows.Add(dr);
}
return dt;
}

时间: 2024-12-30 03:30:38

将json字符串反序列化为DataTable 对JsonConvert的补充的相关文章

将JSON字符串反序列化为指定的.NET对象类型

前言: 关于将JSON字符串反序列化为指定的.NET对象类型数据常见的场景主要是关于网络请求接口,获取到请求成功的响应数据.本篇主要讲的的是如何通过使用Newtonsoft.Json中的JsonConvert.DeserializeObject<T>(string value)方法将对应的JSON字符串转化为指定的.NET对象类型数据. 方法一.在项目中定义对应的对象参数模型,用于映射反序列化出来的参数(复杂JSON字符串数据推荐使用): 如下是一组.NET后台请求接口成功获取到的复杂的JSO

C# Json数据反序列化为Dictionary并根据关键字获取指定值1

Json数据: { "dataSet": { "header": { "returnCode": "0", "errorInfo": "HTTP请求错误", "version": "V1.0R010", "totalRows": "2000", "returnRows": "20

C# Json数据反序列化为Dictionary并根据关键字获取指定值

Json数据: { "dataSet": { "header": { "returnCode": "0", "errorInfo": "HTTP请求错误", "version": "V1.0R010", "totalRows": "2000", "returnRows": "20

nodejs将JSON字符串转化为JSON对象

如何将JSON字符串转化为JSON对象? JSON.parse(str)       JSON是javascript的一个内置对象,提供了转换JSON对象与字符串互相转换的方法: 问题来了,道理我都懂可是就是报错! 这是我的一个JSON文件,里面是一些定义的JSON测试数据: 这是核心代码: 这是报错的信息: 为什么报错? 因为我的json文件读出来的开头有一个空格.就这回事. ok,修改代码,测试 使用trim去掉开头多余的空格 ok,通过:

从HTTP request的body中拿到JSON并反序列化为一个对象

import com.google.gson.Gson; import org.apache.struts2.ServletActionContext; import javax.servlet.ServletRequest; import java.io.*; /** * Created by sky.tian on 2015/1/12. */ public class Test { private static final int DEFAULT_BUFFER_SIZE = 1024 * 4

C#Json数据反序列化为Dictionary并根据关键字获取指定的值

Json数据: { "dataSet": { "header": { "returnCode": "0", "errorInfo": "HTTP请求错误", "version": "V1.0R010", "totalRows": "2000", "returnRows": "20

json字符串转化为list泛型

json字符串格式如下: String jsonStr = "{\"data\":[{\"id\":\"001\",\"name\":\"evan\",\"age\":\"18\"},null,{\"id\":\"002\",\"name\":\"zl\",\"age\

通过获取客户端Json数据字符串,反序列化为实体对象的一段代码

#region 保存候选人数据 /// <summary> /// 保存候选人数据 /// </summary> /// <param name="entity"></param> /// <returns></returns> [AdminAuthorize] [ValidateInput(false)] [AcceptVerbs(HttpVerbs.Post)] public ActionResult Save

json字符串反序列化成匿名类型对象

添加第三方引用 using Newtonsoft.Json; /// <summary> /// 匿名类型解析 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="jsonString"></param> /// <param name="anonymousTypeObject">