首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swashbuckle.AspNetCore (5.0.0-rc5)忽略公共字段

Swashbuckle.AspNetCore (5.0.0-rc5)忽略公共字段
EN

Stack Overflow用户
提问于 2020-01-11 08:23:10
回答 1查看 235关注 0票数 2

首先,这在Swashbuckle.AspNetCore v4中运行良好。因此,给定这个模型和端点;

代码语言:javascript
复制
public class TestRequest
{
    public string test1 { get; set; }
    public string test2;
}

[HttpPost]
public void Post([FromBody] TestRequest value)
{
}

Swagger只显示;

代码语言:javascript
复制
{
  "test1": "string"
}

作为示例TestRequest值。

这种行为现在是有意的吗?有没有办法通过设置或过滤器来改变这一点?我有一大堆只使用字段的导入服务。(由dotnet-svcutil生成,这很常见)

EN

回答 1

Stack Overflow用户

发布于 2020-01-12 01:22:30

好吧,根据@flyog57的建议,我自己解决了这个问题,我发现新的Swashbuckle.AspNetCore使用的是MS json.net而不是Newtonsoft。

因此,在https://github.com/domaindrivendev/Swashbuckle.AspNetCore上阅读git自述文件第十次

我发现有一种方法可以将json序列化程序恢复到Newtonsoft。首先(从5.0.0-rc5版本开始)安装此包;

代码语言:javascript
复制
Install-Package Swashbuckle.AspNetCore.Newtonsoft -Version 5.0.0-rc5

然后在Start.ConfigureServices中告诉Swashbuckle使用;

代码语言:javascript
复制
services.AddSwaggerGenNewtonsoftSupport();

现在你会发现所有这些公共的“字段”已经重新出现在你的swagger页面中了。

更新:.Net 5+在JsonSerializerOptions类中有一个"IncludeFields“选项。

https://docs.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions.includefields?view=net-5.0

现在太简单了。

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

https://stackoverflow.com/questions/59690601

复制
相关文章

相似问题

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