1. var obj = new { age = 11, name = "可乐" };
  2. //设置编码范围,C#没有默认全范围编码
  3. var options = new JsonSerializerOptions
  4. {
  5. Encoder = JavaScriptEncoder.Create(UnicodeRanges.All),
  6. WriteIndented = true
  7. };
  8. var jsonString = JsonSerializer.Serialize(obj, options);
  9. var obj1 = JsonSerializer.Deserialize<object>(jsonString);

结论

不建议从Newtonsoft.Json(检查nj)迁移到System.Text.Json(简称stj),有如下几点差异性:
1.stj区分大小写
2.stj对注释引发异常
3.stj不会处理尾随逗号
4.stj最大深度64
因为stj更考虑性能方面,因此限制更严格

参考

如何使用自訂字元編碼 System.Text.Json 如何使用 System.Text.Json 自定义字符编码 如何在 .NET 中序列化和還原序列化 (封送處理和 unmarshal) JSON c# .net core 返回json 中文字符编码被转换或乱码问题 How to use a JSON document, Utf8JsonReader, and Utf8JsonWriter in System.Text.Json 如何从 Newtonsoft.Json 迁移到 System.Text.Json