JsonExtensions.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System.Buffers;
  2. using System.Text;
  3. using System.Text.Encodings.Web;
  4. using System.Text.Json;
  5. using System.Text.Json.Nodes;
  6. using System.Text.Unicode;
  7. using System.Xml.Linq;
  8. namespace IES.ExamServer
  9. {
  10. public static class JsonExtensions
  11. {
  12. private static readonly JsonSerializerOptions jsonSerializerOptions = new JsonSerializerOptions
  13. {
  14. Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
  15. };
  16. public static string ToJsonString(this JsonElement json)
  17. {
  18. return JsonSerializer.Serialize(json, jsonSerializerOptions);
  19. }
  20. public static string ToJsonString(this Object obj)
  21. {
  22. return JsonSerializer.Serialize(obj, jsonSerializerOptions);
  23. }
  24. public static string ToJsonString(this JsonNode node)
  25. {
  26. return JsonSerializer.Serialize(node, jsonSerializerOptions);
  27. }
  28. public static T? ToObject<T>(this JsonElement json) where T : class
  29. {
  30. return JsonSerializer.Deserialize<T>(json.GetRawText(), jsonSerializerOptions);
  31. }
  32. public static T? ToObject<T>(this string json) where T : class
  33. {
  34. try
  35. {
  36. return JsonSerializer.Deserialize<T>(json, jsonSerializerOptions);
  37. }
  38. catch (JsonException ex)
  39. {
  40. return null;
  41. // throw new InvalidOperationException("Failed to deserialize JSON.", ex);
  42. }
  43. }
  44. public static T? ToObject<T>(this JsonNode json) where T : class
  45. {
  46. return JsonSerializer.Deserialize<T>(json, jsonSerializerOptions!);
  47. }
  48. }
  49. }