JsonConverter.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // ***********************************************************************
  2. // <summary>解决JSON转换空GUID问题</summary>
  3. // ***********************************************************************
  4. using System;
  5. using Newtonsoft.Json;
  6. namespace SysBaseLibs
  7. {
  8. public class GuidConverter : JsonConverter
  9. {
  10. public override bool CanConvert(Type objectType)
  11. {
  12. return objectType.IsAssignableFrom(typeof(Guid));
  13. }
  14. public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
  15. {
  16. Guid result = Guid.Empty;
  17. if (reader.Value == null) return result;
  18. Guid.TryParse(reader.Value.ToString(), out result);
  19. return result;
  20. }
  21. public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
  22. {
  23. serializer.Serialize(writer, value);
  24. }
  25. }
  26. public class DecimalConverter : JsonConverter
  27. {
  28. public override bool CanConvert(Type objectType)
  29. {
  30. return objectType.IsAssignableFrom(typeof(decimal));
  31. }
  32. public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
  33. {
  34. decimal result = 0;
  35. if (reader.Value == null) return result;
  36. decimal.TryParse(reader.Value.ToString(), out result);
  37. return result;
  38. }
  39. public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
  40. {
  41. serializer.Serialize(writer, value);
  42. }
  43. }
  44. }