相关疑难解决方法(0)

使用带有 NetCore WebApi 和 System.Text.Json 的 JSON 合并补丁来区分 NULL 和不存在

我想使用JSON Merge Patch支持部分更新支持部分更新。领域模型基于始终有效的概念,并且没有公共设置器。因此我不能只将更改应用于类类型。我需要将更改翻译为特定命令。

由于类具有可为 null 的属性,我需要能够区分设置为 null 的属性和未提供的属性。

我知道JSON Patch。我可以用来patch.JsonPatchDocument.Operations浏览更改列表。JSON Patch 只是冗长且对客户端来说更加困难。JSON Patch 需要使用Newtonsoft.Json(Microsoft 声明有一个选项可以更改Startup.ConfigureServices为仅用于Newtonsoft.JsonJSON Patch ( https://learn.microsoft.com/en-us/aspnet/core/web-api/jsonpatch?view=aspnetcore-6.0 )。

Newtonsoft 支持IsSpecified -Properties,可用作 DTO 类中 JSON Merge Patch 的解决方案(How to make Json.NET set IsSpecifiedproperty for property with complex values?)。这可以解决问题,但再次需要 Newtonsoft。System.Text.Json 不支持此功能。有一个长达 2 年的开放问题(https://github.com/dotnet/runtime/issues/40395),但没什么可期待的。

有一篇文章描述了用于 Web API 的自定义 JsonConverter 的解决方案( https://github.com/dotnet/runtime/issues/40395)。该解决方案仍然适用于 NetCore 吗?

我想知道在填充 DTO 对象后是否有一个选项可以访问原始 json或控制器方法内的 json 对象。然后我可以手动检查是否设置了属性。Web Api 关闭了流,因此我无法再访问正文。似乎有一些方法可以改变这种行为( …

json json-patch asp.net-core-webapi system.text.json

3
推荐指数
1
解决办法
2111
查看次数