如果为 null,则 JsonPatchDocument 实例化嵌套对象
Posted
技术标签:
【中文标题】如果为 null,则 JsonPatchDocument 实例化嵌套对象【英文标题】:JsonPatchDocument instantiate nested object if null 【发布时间】:2021-10-19 23:18:30 【问题描述】:我有一个这样的数据模型:
Student
public string Name get; set;
public Address address get; set;
Address
public string City get; set;
public int Postcode get; set;
我有以下数据:
Student1
"name": "John",
"address": null
我想用以下命令修补对象
"value": "Sydney",
"path": "student/address/city",
"op": "add"
如果地址对象为空(当应用更改到此目标“学生/地址/城市”时),是否可以初始化地址对象,而无需手动设置?
我正在使用
jsonPatchDoc.ApplyTo(student1);
【问题讨论】:
在此之前你可以阅读官方的例子,也许它可以帮助你:docs.microsoft.com/en-us/aspnet/core/web-api/… 谢谢 我已经看过链接了。它基本上说这将在这种情况下抛出异常(目标不存在)“如果路径指向不存在的位置:如果要修补的资源是动态对象:添加属性。如果要修补的资源是静态的对象:请求失败。” 【参考方案1】:add
是这里的错误指令。你想要replace
。
在这个 JSON 中
"name": "John",
"address": null
字段address
存在,即使它的值为空。因此,您必须将 null
值替换为包含城市的 address
。这是您应该提供的说明:
[
"op": "replace",
"path": "/address",
"value":
"city": "Sydney"
]
这导致资源看起来像
"name": "John",
"address":
"city": "Sydney"
这与 .NET 的 JsonPatchDocument
兼容。
【讨论】:
以上是关于如果为 null,则 JsonPatchDocument 实例化嵌套对象的主要内容,如果未能解决你的问题,请参考以下文章
如果为 null,则 JsonPatchDocument 实例化嵌套对象