如果为 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 实例化嵌套对象

如果字段设置为 null,则恢复为 mongoose 中的默认值

如果为 NULL,则 SQL 插入

csharp 接受一个对象,如果为null则返回true。

如果参数为空,则打字稿函数返回类型为空

ListView.builder如果appbar为null则显示可用空间