using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; namespace HT.Cloud.Code { #region JsonHelper public static class JsonHelper { /// /// 把数组转为逗号连接的字符串 /// /// /// /// public static string ArrayToString(dynamic data, string Str) { string resStr = Str; foreach (var item in data) { if (resStr != "") { resStr += ","; } if (item is string) { resStr += item; } else { resStr += item.Value; } } return resStr; } public static object ToObject(this string Json) { return string.IsNullOrEmpty(Json) ? null : JsonConvert.DeserializeObject(Json); } public static T ToObject(this string Json) { Json = Json.Replace(" ", ""); return Json == null ? default(T) : JsonConvert.DeserializeObject(Json); } public static JObject ToJObject(this string Json) { return Json == null ? JObject.Parse("{}") : JObject.Parse(Json.Replace(" ", "")); } public static List ToList(this string Json) { return Json == null ? null : JsonConvert.DeserializeObject>(Json); } public static string ToJson(this object obj, string dateFormat = "yyyy/MM/dd HH:mm:ss") { return obj == null ? string.Empty : JsonConvert.SerializeObject(obj, new IsoDateTimeConverter { DateTimeFormat = dateFormat }); } public static string ToJsonNullValueHandling(this object obj, string dateFormat = "yyyy/MM/dd HH:mm:ss") { return obj == null ? string.Empty : JsonConvert.SerializeObject(obj, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); } } #endregion JsonHelper #region JsonConverter /// /// Json数据返回到前端js的时候,把数值很大的long类型转成字符串 /// public class StringJsonConverter : JsonConverter { public StringJsonConverter() { } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return reader.Value.ToLong(); } public override bool CanConvert(Type objectType) { return true; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { if (value == null) { writer.WriteNull(); return; } string sValue = value.ToString(); writer.WriteValue(sValue); } } /// /// DateTime类型序列化的时候,转成指定的格式 /// public class DateTimeJsonConverter : JsonConverter { public DateTimeJsonConverter() { } public override bool CanConvert(Type objectType) { return true; } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { return reader.Value.ParseToString().ToDate(); } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { if (value == null) { writer.WriteNull(); return; } DateTime? dt = value as DateTime?; if (dt == null) { writer.WriteNull(); return; } writer.WriteValue(dt.Value.ToString("yyyy/MM/dd HH:mm:ss")); } } #endregion JsonConverter }