C#对象转JSON字符串和JSON字符串转对象

C#对象转JSON字符串和JSON字符串转对象

/* 创建者:菜刀居士的博客

* 创建日期: 2014年09月03号

* 功能: Json操作

*

*/

namespace Net.String.ConsoleApplication
{
using System;
using System.Data;
using System.Collections;
using System.ComponentModel;
using System.Collections.Generic;
using System.Web.Script.Serialization;
public class JsonHelper
{
/// <summary>
/// 把json字符串转成对象
/// </summary>
/// <typeparam name="T">对象</typeparam>
/// <param name="data">json字符串</param>
public static T Deserialize<T>(string data)
{
System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
return json.Deserialize<T>(data);
}

/// <summary>

/// 把对象转成json字符串

/// </summary>

/// <param name="o">对象</param>

/// <returns>json字符串</returns>

public static string Serialize(object o)

{

System.Text.StringBuilder sb = new System.Text.StringBuilder();

System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();

json.Serialize(o, sb);

return sb.ToString();

}

/// <summary>

/// 把DataTable对象转成json字符串

/// </summary>

public string ToJson(DataTable dt)

{

JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();

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);

}

return javaScriptSerializer.Serialize(arrayList);

}

}

public static class EnumerableExtension

{

/// <summary>

/// 集合添加一个对象

/// </summary>

public static IEnumerable<T> Add<T>(this IEnumerable<T> e, T value)

{

foreach (var cur in e)

{ yield return cur; }

yield return value;

}

/// <summary>

/// 把集合转成DataTable

/// </summary>

public static DataTable ConvertToDataTable<T>(this IEnumerable<T> enumerable)

{

var dataTable = new DataTable();

foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(typeof(T)))

{

dataTable.Columns.Add(pd.Name, pd.PropertyType);

}

foreach (T item in enumerable)

{

var Row = dataTable.NewRow();

foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))

{

Row[dp.Name] = dp.GetValue(item);

}

dataTable.Rows.Add(Row);

}

return dataTable;

}

}

}
原文地址:https://www.cnblogs.com/ShoneH/p/5151173.html