首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DateOnly api中的.net6 Json转换

在DateOnly api中的.net6 Json转换
EN

Stack Overflow用户
提问于 2021-11-24 16:35:42
回答 1查看 7.9K关注 0票数 11

tl;dr:如何将DateOnly JsonConverter添加到.net6 web的应用程序配置中?

我有一个带有DateOnly属性的对象,我将从控制器返回它。当我提出请求时,我会得到错误“不支持'System.DateOnly‘实例的序列化和反序列化”。

我理解DateOnly和TimeOnly在.net6 (https://github.com/dotnet/runtime/issues/53539)中的反/序列化有其局限性,我遵循了自定义JsonConverter的推荐用法。但是,我遇到的问题是我在哪里初始化转换器。

我尝试在web应用程序构建器中添加转换器..。

代码语言:javascript
复制
builder.Services
    .AddControllers()
    .AddJsonOptions(options => options.JsonSerializerOptions.Converters.Add(new DateOnlyConverter()));

但没有运气。

然后我试着专门配置它

代码语言:javascript
复制
builder.Services.Configure<JsonSerializerOptions>(options =>
    options.Converters.Add(new DateOnlyConverter()));

那里也没有运气。

因此,我尝试从控制器返回Results.Json,其中包含选项Results.Json(status, options)中的转换器。即使这样也不起作用。

但是,真正起作用的是直接向属性添加一个属性。

代码语言:javascript
复制
[property: JsonConverter(typeof(DateOnlyConverter))]
    DateOnly DateOrdered,

我不希望在每次使用DateOnly时都添加这个属性,而且也不清楚在将转换器配置为WebApplication的一部分时如何阻止它被调用。我在.net5应用程序中做了类似的事情,并认为IHostBuilder和WebApplicationBuilder之间的一些细微差别可能是造成问题的原因。

编辑:可能值得注意的是,我正在使用新的最小apis。但就连微软也指出,Json序列化是可配置的在这里的医生里。文档显示的语法与常用的builder.Services.Configure<JsonOptions>略有不同,因此我猜想这可能是问题所在。也许最小的apis的配置处理方式不同。但不是这样。至少,在最小api文档中使用建议的配置并不能解决问题。

EN

回答 1

Stack Overflow用户

发布于 2021-11-25 00:41:44

好吧,经过足够的搜索,我找到了答案。是的,最小apis的配置是独立的。文档就在上面,他们描述了使用builder.Services.Configure<JsonOptions>(options => ...)配置最小api的json序列化。希望这个答案将帮助其他人在未来过于不耐烦地仔细阅读文档。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70099730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档