JsonExtensions.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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 JsonDocument jdoc, JsonSerializerOptions options = null)
  33. {
  34. return jdoc.RootElement.ToObject<T>(options);
  35. }
  36. public static T ToObject<T>(this JsonElement jelement, JsonSerializerOptions options = null)
  37. {
  38. var bufferWriter = new ArrayBufferWriter<byte>();
  39. using var writer = new Utf8JsonWriter(bufferWriter);
  40. jelement.WriteTo(writer);
  41. writer.Flush();
  42. return JsonSerializer.Deserialize<T>(bufferWriter.WrittenSpan, options);
  43. }
  44. }
  45. }