首页 > 其他分享 >.Net内置JSON序列化中文问题

.Net内置JSON序列化中文问题

时间:2022-10-26 19:58:38浏览次数:90  
标签:Name Encoder JSON UnicodeRanges new Net 序列化 option

今天在用System.Text.Json序列化的时候遇到了中文序列化的一个问题,示例如下:

JsonSerializer.Serialize(new {Name = "你好"});

预期结果是: {"Name":"你好"},但得到结果如下:{"Name":"\u4F60\u597D"} 。虽然不影响功能,但大大的影响了可读性

找了一下,默认模式下对HTML敏感字符是不转义的,防止造成WEB安全问题,仅允许UnicodeRanges.BasicLatin的编码,我们如果需要对中文也转义的话,则需要指定JsonSerializerOptions的Encoder

var option = new JsonSerializerOptions()
{
    Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
};
var json = JsonSerializer.Serialize(new {Name = "你好"}, option);
							

不过这个Encoder是包含所有字符集的,它等价于JavaScriptEncoder.Create(UnicodeRanges.All),这个也是为啥它带一个Unsafe的原因,我们可以自己创建一个范围小点的Encoder,

var option = new JsonSerializerOptions()
{
    Encoder = JavaScriptEncoder.Create(UnicodeRanges.BasicLatin, UnicodeRanges.CjkUnifiedIdeographs)
};
																								

 

标签:Name,Encoder,JSON,UnicodeRanges,new,Net,序列化,option
From: https://www.cnblogs.com/TianFang/p/16829790.html

相关文章

  • AutoMapper在.Net Core WebApi中使用
    在.NetCoreWebApi里使用AutoMapper1.安装AutoMapper管理包 注意:service层中安装WebApi层也需要安装因为Webpi层有时候也需要用到Dto 2.startup在Configure......
  • apijson 初探
    apijson初探本文试着从5W1H角度切入,试图快速建立自己对apijson的整体认知,所以这不是一趟快速入门的demo之旅,而是显得比较务虚的探索式知识体系整合。1、Why前后......
  • kubernetes对接ceph rbd
    kubernetesstorageclass存储动态生成pv流程:首先创建storageclass-->pvc请求已经创建的sc,通过sc来自动创建pv-->这样就达到通过storageclass动态生成一个pv的效果了测试......
  • react-json-view
    react-json-viewreact-json-view示例//importthereact-json-viewcomponentimportReactJsonfrom'react-json-view'//usethecomponentinyourapp!<ReactJs......
  • 如何通过 C#/VB.NET 重命名 Excel 表格并设置选项卡颜色
    在Excel文件中创建多个工作表可以使数据更加井然有序。例如,可以为不同的区域、不同的月份/年份或不同的项目等创建不同的工作表。但要区分多个工作表,则需要更改它们的名......
  • keras分类猫狗数据(下)finetune
    ​​keras分类猫狗数据(上)数据预处理​​​​​​keras分类猫狗数据(中)使用CNN分类模型​​​​​​keras分类猫狗数据(下)迁移学习​​​​​​keras分类猫狗数据(番外篇)深度......
  • PyTorch内置模型detection的resnet50使用,使用本地的权重文件
     1##完全使用本地权重,识别时根据识别准确率来确定是否绘制2importmatplotlib.pyplotasplt3importtorch4importtorc......
  • 【VB.NET】关于绘制五角星
        在本人的视频课程《​​【VB.NET】二维图形绘制​​》里曾经演示了如何利用渐变颜色填充五角星的代码,在这里我再补充讲解下如何利用数学三角函数计算绘制五角星......
  • Flutter(九)Json序列化与反序列化(转Model)
    在日常开发中JSON的序列化与反序列化是一个常见的操作;而Dart语言不支持反射,运行时反射会影响Dart的treeshaking(摇树优化),treeshaking可以“抖掉”不需要使用的代码,显著......
  • java反序列化漏洞cc_link_one
    CC-LINK-one前言这里也正式进入的java的反序列化漏洞了,简单介绍一下CC是什么借用一些官方的解释:ApacheCommons是Apache软件基金会的项目,曾经隶属于Jakarta项目。Commons......