首页 > 解决方案 > 更新数组对象的jsonpatch路径

问题描述

我在使用 json 补丁和 dotnetcore Microsoft.AspNetCore.JsonPatch 更新数组时遇到问题。

这个想法是创建一个替换现有数组内容的操作,该数组在后端是一个对象列表。我在http://jsonpatch.com/上读过,您只能使用指针来替换数组内容。这不是最优的,因为数组可能没有正确排序。所以我尝试替换整个数组的内容,但是在应用替换时出现错误:

Microsoft.AspNetCore.JsonPatch.Exceptions.JsonPatchException:值''对于目标位置无效。

这将是 json 补丁的示例正文:

[{
    "op": "replace",
    "path": "/users",
    "value":[
            {
                    "name" : "john doe",
                    "age" : 35
            },
            {
                    "name" : "mary jane",
                    "age" : 26
            }
    ]
  }
]

关于如何使用 json 补丁创建一个主体来替换数组的任何想法?

最好的祝福

标签: c#arraysjson

解决方案


我正在处理同样的问题。不允许Repalce直接使用 list 所以我的解决方案是定义的Users对象,它有List<User>.

        [HttpPatch]
        public IActionResult JsonPatchForUsers([FromBody] JsonPatchDocument patchDoc)
        {
            var users = new Users();
            patchDoc.ApplyTo(users);

            return new ObjectResult(users);
        }


        public class User
        {
            public string Name { get; set; }

            public int age { get; set; }

        }

        public class Users
        {
            public List<User> users { get; set; }
            public Users()
            {
                users = new List<User>()
                {
                    new User
                    {
                        Name = "michael",
                        age = 10
                    },
                    new User
                    {
                        Name = "Jack",
                        age = 11
                    }
            };
            }
        }

它对我有用。 在此处输入图像描述


推荐阅读