net core web api中使用Newtonsoft.Json替换原生的System.Text.Json
//builder.Services.AddControllers().AddNewtonsoftJson(options =>
//{
// //修改属性名称的序列化方式,首字母小写
// options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
// //修改时间的序列化方式
// options.SerializerSettings.Converters.Add(new IsoDateTimeConverter() { DateTimeFormat = "yyyy/MM/dd HH:mm:ss" });
// //忽略循环引用
// //options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
// //解决命名不一致问题,不使用驼峰样式的key
// options.SerializerSettings.ContractResolver = new DefaultContractResolver();
//});
//对System.Text.Json的相关配置
builder.Services.AddControllers().AddJsonOptions(options => {
//格式化日期时间格式,需要自己创建指定的转换类DatetimeJsonConverter
options.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter());
//数据格式首字母小写
//options.JsonSerializerOptions.PropertyNamingPolicy =JsonNamingPolicy.CamelCase;
//JsonNamingPolicy.CamelCase首字母小写(默认),null则为不改变大小写
options.JsonSerializerOptions.PropertyNamingPolicy = null;
options.JsonSerializerOptions.Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
//允许额外符号
options.JsonSerializerOptions.AllowTrailingCommas = true;
//反序列化过程中属性名称是否使用不区分大小写的比较
options.JsonSerializerOptions.PropertyNameCaseInsensitive = false;
});
4)对于枚举类型属性值(非数字型)的序列化,需要加 [JsonStringEnumConverter]
特性
比如
[JsonConverter(typeof(JsonStringEnumConverter))]
public SiteCategoryType CategoryType { get; set; }
Json.NET 对应的是 StringEnumConverter
5)反序列化 Guid 的问题
详见博问:https://q.cnblogs.com/q/120383/
注:对应类型转换问题,可以通过实现自定义 JsonConverter<T>
解决,参考 corefx#36639 (comment)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2021-04-22 js中的encodeURIComponent,decodeURIComponent对应C#与之相对应的方法