侧边栏

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)

posted @   我有我的骄傲  阅读(928)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
历史上的今天:
2021-04-22 js中的encodeURIComponent,decodeURIComponent对应C#与之相对应的方法
点击右上角即可分享
微信分享提示