将 Asp.Net Core 2.2 App 迁移到 3.1 时的整数序列化 [关闭]
Posted
技术标签:
【中文标题】将 Asp.Net Core 2.2 App 迁移到 3.1 时的整数序列化 [关闭]【英文标题】:Integer serialization while migrating Asp.Net Core 2.2 App to 3.1 [closed] 【发布时间】:2020-05-19 10:07:16 【问题描述】:我正在将 Asp.Net Core 2.2 Web Api 迁移到 3.1
我注意到现在 System.Int32 现在由 System.Text.Json 序列化为字符串
之前(2.2):
id: 1, ..
在 (3.1) 之后:
id: "1", ..
编辑 id 是 C# 中的 int 属性
因此需要更改使用 web api 的 Js - 我不急于进行的相当繁重的迁移。
我找到了以下选项:
Keeping NewtonSoft Json.Net for serialization
这是一个解决方案。但我想跟上最新的技术!
Providing a custom converter for integers
在我的情况下似乎不起作用
有没有办法告诉 System.Text.Json 中的新 Json 序列化器将整数序列化为 42 而不是“42”?
【问题讨论】:
在我看来,你应该检查你的 Startup 类。我使用 web api 模板为 .net core 3.1 制作了项目,我从控制器接收 int 值作为 int,而不是 string。 您能否提供更多有关 API 和您正在序列化的模型的信息?id
实际上是 int32
还是字符串/对象或其他类型?您是否注册了一些自定义转换器? S.T.Json
将整数输出为数字,而不是字符串。
无法在独立控制台应用程序中重现,请参阅 dotnetfiddle.net/svwxd4。你能分享一个minimal reproducible example吗?事实是,与 Json.NET 不同,System.Text.Json
不会自动将string
反序列化为int
,但这不是您所描述的问题。
@ahsonkhan : 刚刚编辑我的属性是 int
@dbc :感谢您的工作。实际上,我从女士那里看到了没有我的“不良行为”的例子——所以我仍然想知道。
【参考方案1】:
在阅读了 Hostel 的建议并检查了新的 Web Api ASP.NET Core 3.1 应用程序并看到了预期的行为后,我将我的 Startup.cs 与Visual Studio 模板应用。
我刚刚在Startup.ConfigureServices
中添加了services.AddControllers();
尽管缺少那个缺失的服务,控制器“工作”了,但没有像预期的那样。
可能是因为存在另一种添加其他服务的扩展方法。
感谢大家的仔细阅读、评论和提问
【讨论】:
以上是关于将 Asp.Net Core 2.2 App 迁移到 3.1 时的整数序列化 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Simple ASP.NET CORE 2.2 App +Vue JS
如何使用 Asp.Net Core 2.2 / IdentityServer4 / SP.NET Core Identity 手动散列密码
ASP.NET CORE 2.2 WEB APP中的会话过期问题
从 MVC 迁移到 ASP.NET Core 3.1 中的端点路由时,具有角色的 AuthorizeAttribute 不起作用