156 lines
5.4 KiB
C#
156 lines
5.4 KiB
C#
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Converters;
|
|
using Newtonsoft.Json.Serialization;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace New_College.Common.Helper
|
|
{
|
|
public class JsonHelper
|
|
{
|
|
/// <summary>
|
|
/// Json 序列化配置
|
|
/// </summary>
|
|
public static readonly JsonSerializerSettings JsonSerializerSettings = new JsonSerializerSettings
|
|
{
|
|
Converters = new List<JsonConverter>()
|
|
{
|
|
new IsoDateTimeConverter{ DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss" }
|
|
},
|
|
NullValueHandling = NullValueHandling.Include,
|
|
ContractResolver = new CamelCasePropertyNamesContractResolver(),
|
|
ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
|
|
PreserveReferencesHandling = PreserveReferencesHandling.None,
|
|
};
|
|
|
|
/// <summary>
|
|
/// 转换对象为json格式字符串
|
|
/// </summary>
|
|
/// <param name="obj"></param>
|
|
/// <param name="loadSetting">加载设置</param>
|
|
/// <returns></returns>
|
|
public static string ToJson(object obj, bool loadSetting = true)
|
|
{
|
|
return loadSetting
|
|
// 设置参数为Formatting.Indented可输出格式化后的json
|
|
? JsonConvert.SerializeObject(obj, Formatting.None, JsonSerializerSettings)
|
|
: JsonConvert.SerializeObject(obj, Formatting.None);
|
|
}
|
|
/// <summary>
|
|
/// 转换json格式字符串为指定类型对象
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="json"></param>
|
|
/// <returns></returns>
|
|
public static T ParseJson<T>(string json)
|
|
{
|
|
try
|
|
{
|
|
return JsonConvert.DeserializeObject<T>(json);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return default(T);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 转换对象为JSON格式数据
|
|
/// </summary>
|
|
/// <typeparam name="T">类</typeparam>
|
|
/// <param name="obj">对象</param>
|
|
/// <returns>字符格式的JSON数据</returns>
|
|
public static string GetJSON<T>(object obj)
|
|
{
|
|
string result = String.Empty;
|
|
try
|
|
{
|
|
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =
|
|
new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));
|
|
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
|
|
{
|
|
serializer.WriteObject(ms, obj);
|
|
result = System.Text.Encoding.UTF8.GetString(ms.ToArray());
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
return result;
|
|
}
|
|
/// <summary>
|
|
/// 转换List<T>的数据为JSON格式
|
|
/// </summary>
|
|
/// <typeparam name="T">类</typeparam>
|
|
/// <param name="vals">列表值</param>
|
|
/// <returns>JSON格式数据</returns>
|
|
public string JSON<T>(List<T> vals)
|
|
{
|
|
System.Text.StringBuilder st = new System.Text.StringBuilder();
|
|
try
|
|
{
|
|
System.Runtime.Serialization.Json.DataContractJsonSerializer s = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));
|
|
|
|
foreach (T city in vals)
|
|
{
|
|
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
|
|
{
|
|
s.WriteObject(ms, city);
|
|
st.Append(System.Text.Encoding.UTF8.GetString(ms.ToArray()));
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
|
|
return st.ToString();
|
|
}
|
|
/// <summary>
|
|
/// JSON格式字符转换为T类型的对象
|
|
/// </summary>
|
|
/// <typeparam name="T"></typeparam>
|
|
/// <param name="jsonStr"></param>
|
|
/// <returns></returns>
|
|
public static T ParseFormByJson<T>(string jsonStr)
|
|
{
|
|
T obj = Activator.CreateInstance<T>();
|
|
using (System.IO.MemoryStream ms =
|
|
new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(jsonStr)))
|
|
{
|
|
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =
|
|
new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(T));
|
|
return (T)serializer.ReadObject(ms);
|
|
}
|
|
}
|
|
|
|
public string JSON1<SendData>(List<SendData> vals)
|
|
{
|
|
System.Text.StringBuilder st = new System.Text.StringBuilder();
|
|
try
|
|
{
|
|
System.Runtime.Serialization.Json.DataContractJsonSerializer s = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(SendData));
|
|
|
|
foreach (SendData city in vals)
|
|
{
|
|
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
|
|
{
|
|
s.WriteObject(ms, city);
|
|
st.Append(System.Text.Encoding.UTF8.GetString(ms.ToArray()));
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
|
|
return st.ToString();
|
|
}
|
|
}
|
|
}
|