首页 新闻 会员 周边

System.Text.Json 序列化中文时哪个 Encoder 性能更好

0
悬赏园豆:40 [已解决问题] 解决于 2026-03-02 11:42

System.Text.Json 序列化时如果想让中文字符保持原样,需要设置 JsonSerializerOptions.Encoder,Encoder 有2个选择:

1)JavaScriptEncoder.UnsafeRelaxedJsonEscaping

services.AddControllers().AddJsonOptions(options =>
{
    options.JsonSerializerOptions.Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
});

2)JavaScriptEncoder.Create(UnicodeRanges.All)

services.AddControllers().AddJsonOptions(options =>
{
    options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All); 
});

请问哪个性能更好一些?

dudu的主页 dudu | 高人七级 | 园豆:23243
提问于:2026-02-27 20:47
< >
分享
最佳答案
0

几乎没有差别 UnsafeRelaxedJsonEscaping 也是 UnicodeRanges.All, 然后要编码的字符个数有一点差异, 例如 UnsafeRelaxedJsonEscaping 对于 html的 '<', '>' 之类的也不会编码, 但是内部判断char要不要编码用的是一个bitmap, 所以性能上可以说几乎没的差别. 应该更多从使用case来判断用哪一个.

PS: 他们底层的实现是同一个, 只是根据配置来修改 要编码的char bitmap.

收获园豆:30
czd890 | 专家六级 |园豆:14821 | 2026-03-02 09:59
其他回答(1)
0

前者静态实例比后面动态实例性能好呢

收获园豆:10
我的名字长沙雕跟着念 | 园豆:681 (小虾三级) | 2026-02-28 12:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册