c# - 更新数组对象的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 补丁创建一个主体来替换数组的任何想法?
最好的祝福
解决方案
我正在处理同样的问题。不允许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
}
};
}
}
推荐阅读
- node.js - chrome 中的 ES6 模块:ERR_ABORTED 404(未找到)
- php - 如何在 PHP 中使用 Mongo 查询?
- r - 删除字符串的开头和结尾,直到它在 R 中找到一个模式
- c# - 在 Unity 中拍摄动画
- deep-learning - 具有可变长度输入的时间序列预测
- angular - 无法在角度 7 中路由到孩子
- c# - 在 DomainUpDown 中将文本转换为数字
- sql - 在 Oracle 12c 中遇到符号 v_PrepareStmt
- c# - 有没有办法防止 ListViewItems 变成 MS.Internal.NamedObject 或从中恢复
- mysql - 如何两次加入同一个表