Browse Source

json 序列化,反序列化中文处理

CrazyIter_Bin 2 years ago
parent
commit
c9a4262ad2
1 changed files with 17 additions and 2 deletions
  1. 17 2
      TEAMModelOS.SDK/Extension/JsonExtensions.cs

+ 17 - 2
TEAMModelOS.SDK/Extension/JsonExtensions.cs

@@ -3,6 +3,7 @@ using System.Buffers;
 using System.Collections.Generic;
 using System.IO;
 using System.Text;
+using System.Text.Encodings.Web;
 using System.Text.Json;
 
 namespace TEAMModelOS.SDK.Extension
@@ -12,7 +13,7 @@ namespace TEAMModelOS.SDK.Extension
         public static string ToJsonString(this JsonDocument jdoc)
         {
             var bufferWriter = new ArrayBufferWriter<byte>();
-            using var writer = new Utf8JsonWriter(bufferWriter, new JsonWriterOptions { Indented = true });
+            using var writer = new Utf8JsonWriter(bufferWriter, new JsonWriterOptions { Indented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping });
             jdoc.WriteTo(writer);
             writer.Flush();
             return Encoding.UTF8.GetString(bufferWriter.WrittenSpan);
@@ -21,7 +22,7 @@ namespace TEAMModelOS.SDK.Extension
         public static string ToJsonString(this JsonElement jelement)
         {
             var bufferWriter = new ArrayBufferWriter<byte>();
-            using var writer = new Utf8JsonWriter(bufferWriter, new JsonWriterOptions { Indented = true });
+            using var writer = new Utf8JsonWriter(bufferWriter, new JsonWriterOptions { Indented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping });
             jelement.WriteTo(writer);
             writer.Flush();
             return Encoding.UTF8.GetString(bufferWriter.WrittenSpan);
@@ -48,11 +49,25 @@ namespace TEAMModelOS.SDK.Extension
 
         public static T ToObject<T>(this JsonDocument jdoc, JsonSerializerOptions options = null)
         {
+            if (options == null)
+            {
+                options = new System.Text.Json.JsonSerializerOptions
+                {
+                    Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
+                };
+            }
             return jdoc.RootElement.ToObject<T>(options);
         }
 
         public static T ToObject<T>(this JsonElement jelement, JsonSerializerOptions options = null)
         {
+            if (options == null)
+            {
+                options = new System.Text.Json.JsonSerializerOptions
+                {
+                    Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
+                };
+            }
             var bufferWriter = new ArrayBufferWriter<byte>();
             using var writer = new Utf8JsonWriter(bufferWriter);
             jelement.WriteTo(writer);