c# - 通过对象 ID 更新数组对象的 jsonpatch 路径

标签 c# json asp.net-web-api json-patch

我正在尝试找出修补一组对象的最佳方法。我正在尝试更改多个对象的排序顺序,并认为 jsonpatch 可能是正确的方法。我的对象看起来像:

[
  {
    "ID": "100",
    "FirstName": "John",
    "LastName": "Smith",
    "Email": "jsmith@test.com",
    "SortOrder": 1
  },
  {

    "ID": "125",
    "FirstName": "John",
    "LastName": "Doe",
    "Email": "jdoe@test.com",
    "SortOrder": 3
  },
  {

    "ID": "50",
    "FirstName": "james",
    "LastName": "johnson",
    "Email": "jjohnson@test.com",
    "SortOrder": 2
  },
]

我创建了一个端点,允许补丁请求使用 jsonpatch 请求更新集合中的多个对象,如下所示:

[
  {
    "op": "replace",
    "path": "/1/SortOrder",
    "value": 2
  },
  {
    "op": "replace",
    "path": "/0/SortOrder",
    "value": 1
  },
  {
    "op": "replace",
    "path": "/2/SortOrder",
    "value": 3
  }
]

我想要做的是在 jsonpatch 路径中使用 ID 属性。我当前的对象结构可能吗?它看起来像:

[
  {
    "op": "replace",
    "path": "/125/SortOrder",
    "value": 2
  },
  {
    "op": "replace",
    "path": "/100/SortOrder",
    "value": 1
  },
  {
    "op": "replace",
    "path": "/50/SortOrder",
    "value": 3
  }
]

我需要做什么才能提出这样的补丁请求?

最佳答案

基于Json pointer RFC ,无法通过某些属性从数组中选择元素。自 JSON Patch使用 JSON 指针,你就不走运了。

很遗憾 JSON 补丁人员没有选择 JSON Path ,或类似的东西,用于选择语言。

关于c# - 通过对象 ID 更新数组对象的 jsonpatch 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009349/

相关文章:

c# - Socket.Shutdown 抛出 SocketException

c# - 启动相机时抛出0x80131515

c# - 用另一台电脑调用一台电脑(Dial up Modem)

json - 如何解析字符串以进行结构化并写入文件

asp.net - 通过 WSS 连接时无法创建 SSL/TLS 安全通道,仅在 Azure 上

c# - 如何在我的 asp net core 3.1 Controller 中的特定操作上设置基本身份验证?

c# - 引用对象定义的 Spring.NET 表达式

java - 如何维护基于 JSON 的领域特定语言的文档?

c# - 使用 Json.Net C# 获取 json 对象中的值和键

c# - ASP.NET Web APi - 将对象作为参数传递