JsonExtensions.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.Buffers;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Text;
  6. using System.Text.Json;
  7. namespace TEAMModelOS.SDK.Extension
  8. {
  9. public static class JsonExtensions
  10. {
  11. public static string ToJsonString(this JsonDocument jdoc)
  12. {
  13. var bufferWriter = new ArrayBufferWriter<byte>();
  14. using var writer = new Utf8JsonWriter(bufferWriter, new JsonWriterOptions { Indented = true });
  15. jdoc.WriteTo(writer);
  16. writer.Flush();
  17. return Encoding.UTF8.GetString(bufferWriter.WrittenSpan);
  18. }
  19. public static string ToJsonString(this JsonElement jelement)
  20. {
  21. var bufferWriter = new ArrayBufferWriter<byte>();
  22. using var writer = new Utf8JsonWriter(bufferWriter, new JsonWriterOptions { Indented = true });
  23. jelement.WriteTo(writer);
  24. writer.Flush();
  25. return Encoding.UTF8.GetString(bufferWriter.WrittenSpan);
  26. }
  27. public static string ToJsonString(this Object obj, JsonSerializerOptions option = null)
  28. {
  29. var json = JsonSerializer.Serialize(obj, option);
  30. return json;
  31. }
  32. public static T ToObject<T>(this string json, JsonSerializerOptions option = null)
  33. {
  34. var obj = JsonSerializer.Deserialize<T>(json);
  35. return obj;
  36. }
  37. public static T ToObject<T>(this JsonDocument jdoc, JsonSerializerOptions options = null)
  38. {
  39. return jdoc.RootElement.ToObject<T>(options);
  40. }
  41. public static T ToObject<T>(this JsonElement jelement, JsonSerializerOptions options = null)
  42. {
  43. var bufferWriter = new ArrayBufferWriter<byte>();
  44. using var writer = new Utf8JsonWriter(bufferWriter);
  45. jelement.WriteTo(writer);
  46. writer.Flush();
  47. return JsonSerializer.Deserialize<T>(bufferWriter.WrittenSpan, options);
  48. }
  49. }
  50. }