C#对象转JSON字符串和JSON字符串转对象
2024-08-26 05:37:14
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;
}
}
}
最新文章
- git did not exit cleanly
- centos7 升级内核到最新版本
- unity3d引擎的学习
- Shell 编程基础之变量和环境变量
- Android中的dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()
- rosetta common sh: mpiCC command not found解决方法
- (转) cocos2dx 显示中文
- PHP使用SnowFlake算法生成唯一ID
- PPTP模式跟L2TP模式有什么不同
- (转) sphinx 高亮显示搜索词
- UVa 674: Coin Change
- Nodejs in Visual Studio Code 04.Swig模版
- 使用 CodeIgniter 框架快速开发 PHP 应用(四)
- 邮箱自动完成(jquary效果)
- php学习笔记——语言切换
- WBS任务分解中前置任务闭环回路检测:有向图的简单应用(C#)
- git clone 带用户名密码的形式但包含@等特殊符号无法正常解析
- Codeforces 1077D Cutting Out(二分答案)
- Java泛型用法总结
- pyautogui 文档(四):消息框功能
热门文章
- LVS三种模式配置及优点缺点比较 转
- slf4j-simple的配置
- 主流Jquery弹出框优缺点对比
- hdfs: 一个分布式文件系统(一)
- C# WinForm 中ComboBox数据绑定的问题 (转)
- Objective-C ,ios,iphone开发基础:多个视图(view)之间的切换,以及视图之间传值。
- [改善Java代码]构造函数尽量简化
- [改善Java代码]若有必要,使用变长数组
- HDU 1003 - Max Sum(难度:*)
- 转:iOS基于MVC的项目重构总结