using System;
using System.Collections.Generic;
using System.ServiceModel.Web;
using System.IO;
using System.Text;
using System.Runtime.Serialization.Json;
using System.Data;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace Tlw.zjxypj.Common
{
/// <summary>
/// 创建:sjm
/// 创建日期:2012-04-27
/// JSon的基础操作类,JSon语法数据与实体,集合互换
/// </summary>
public class JSonUtil
{
public static string Serialize(object entity)
{
IsoDateTimeConverter dateTimeConverter = new IsoDateTimeConverter();
dateTimeConverter.DateTimeFormat = "yyyyMMddHHmmss";
return JsonConvert.SerializeObject(entity, dateTimeConverter);
}
public static T Deserialize<T>(string entity)
{
try
{
return JsonConvert.DeserializeObject<T>(entity);
}
catch (Exception ex)
{
throw new Exception(string.Format("Deserialize Json:{0} to {1}", entity, typeof(T).FullName), ex);
}
}
public static object Deserialize(string entity, Type type)
{
try
{
return JsonConvert.DeserializeObject(entity, type);
}
catch (Exception ex)
{
throw new Exception(string.Format("Deserialize Json:{0} to {1}", entity, type.FullName), ex);
}
}
/// <summary>
/// 将json数据转换为泛型 (使用utf-8编码)
/// </summary>
/// <typeparam name="T">泛型类</typeparam>
/// <param name="byteData">json数据</param>
/// <returns></returns>
public static T ConvertByteDataToObject<T>(string byteData)
{
T obj;
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(byteData)))
{
var serializer = new DataContractJsonSerializer(typeof(T));
obj = (T)serializer.ReadObject(ms);
}
return obj;
}
/// <summary>
/// 将泛型转换为json 数据(使用utf-8编码)
/// </summary>
/// <typeparam name="T">泛型类</typeparam>
/// <param name="obj">转换对象</param>
/// <returns></returns>
public static string ConvertObjectToByteData<T>(T obj)
{
string result;
using (var ms = new MemoryStream())
{
var serializer = new DataContractJsonSerializer(typeof(T));
serializer.WriteObject(ms, obj);
ms.Position = 0;
result = Encoding.UTF8.GetString(ms.ToArray());
}
return result;
}
/// <summary>
/// 转换DataTable 为JSON
/// </summary>
/// <param name="dt">转换对象</param>
/// <returns></returns>
public static string ConvertDataTableToJson(DataTable dt)
{
if (dt.Rows.Count == 0)
{
return "";
}
StringBuilder jsonBuilder = new StringBuilder();
// jsonBuilder.Append("{");
//jsonBuilder.Append(dt.TableName.ToString());
jsonBuilder.Append("[");//转换成多个model的形式
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
// jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
/// <summary>
/// 转换DataTable 为JSON
/// </summary>
/// <param name="dt">转换对象</param>
/// <returns></returns>
public static string ConvertDataTableToJson1(DataTable dt)
{
if (dt.Rows.Count == 0)
{
return "";
}
StringBuilder jsonBuilder = new StringBuilder();
// jsonBuilder.Append("{");
//jsonBuilder.Append(dt.TableName.ToString());
//jsonBuilder.Append("[");//转换成多个model的形式
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
//jsonBuilder.Append("]");
// jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
}
}
json与泛型互转和json与datatable互转
最新推荐文章于 2024-11-02 09:58:34 发布
本文介绍了一个用于处理JSON数据的实用工具类JSonUtil。该类提供了多种方法,包括序列化对象到JSON字符串、反序列化JSON字符串到对象、转换JSON数据到指定类型等。此外还介绍了如何将DataTable转换为JSON格式。
3431

被折叠的 条评论
为什么被折叠?



