问题标签 [json-patch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
116 浏览

database - HTTP PATCH 连接表?

RFC 6902明确地定义了很多东西。除了两个相关的事情:

  1. 如何修补连接到资源的表?
  2. 当连接有多行时?

例如。

结果来自这些数据库表和列:

所以,如果我发送一个补丁:

这非常简单。但是当我想更新同一资源的类别时呢?IE。“加入”表。

另外,请注意两件事:

  • 不包括任何现有值。
  • 金额小于原始值(2 个值而不是 3 个)

假设补丁之前的原始值在newscategories_mapping.id20、21 和 22 中。

问题1:/categories值是否应该4替换id=20,值5替换id=21?还是应该删除 id=20, id=21 和 id=22 并且新值得到新的 ID id=23 和 id=24?

问题 2:即使没有明确要求,是否应该删除 id=22 ?

问题 3:或者根本不应该执行上述操作,而是应该有一个单独的端点来修补每个类别?所以,例如。PATCH /news/123/categories/20PATCH /news/123/categories/21

0 投票
1 回答
314 浏览

swap - JSONPatch WCF REST API 获取无效负载错误

我正在尝试在我的 WCF REST API(ASP.NET v4.5)中使用 JSONPatch(KevinDockx 版本)。我的经营合同如下:-

并实现如下: -

我的数据类似于下面的格式,我想在参与者数组上执行添加、更新、删除、移动和交换操作。

在 JSON 反序列化时,我遇到以下错误:-

你能帮我解决我在这方面所缺少的吗?有什么额外的事情需要做吗?

0 投票
3 回答
2837 浏览

json - 如何将两个 JSON 对象与 Rust 合并?

我有两个 JSON 文件:

JSON 1

JSON 2

我想将#2 合并到#1 中,其中#2 覆盖#1,产生以下输出:

我检查了执行此操作的 crate json-patch,但它不能针对稳定的 Rust 进行编译。是否可以使用serde_json和 stable Rust之类的东西做类似的事情?

0 投票
0 回答
814 浏览

annotations - Retrofit2 - 如何执行 JSON 补丁请求 (RFC 6902)

从 Retrofit2 2.3.0 开始,似乎没有内置功能来执行 JSON 补丁请求(如 RFC 6902 中所定义。另外,请参阅http://jsonpatch.com/获取一些示例)。使用可用的@PATCH 注释,完整的对象随请求一起发送(好像我会发送一个 PUT 请求,这不是我想要的)

乍一看改造文档后,似乎没有干净简单的方法来引入自定义注释(例如@JSONPATCH)以使我自己的实现正常工作。

我能找到的有关此要求的唯一相关信息是https://medium.com/@andretietz/custom-上的这个实验性方法(正如他自己所说的那样 ->这是非常实验性的,但它目前可以完成工作)方法带有-retrofit-2-8701ca7ce102 的注释。我没有尝试这个例子,但是对于这个简单的要求来说,复杂性似乎有点超出规模。

也许我错过了一些东西,并且有一个简单的解决方案?

0 投票
2 回答
18770 浏览

json-patch - jsonpatch 将元素添加到数组并在不存在时创建它

我正在尝试将元素附加到数组中。但我不能确保数组已经存在。因此,如果没有,则应创建它。

这个例子有效:

源json:

补丁文档:

但在这种情况下,它不会附加任何内容:

源json:

我尝试了一个解决方案,首先添加一个空数组然后追加,但这总是会清除现有条目:

我错过了什么或者规范中没有解决方案吗?

0 投票
1 回答
4525 浏览

c# - 使用 VsConnection WorkItemTrackingHttpClient 补丁通过 VSTS 客户端 API 添加父关系

我正在尝试以编程方式在两个工作项之间添加父子关系。我正在使用 Microsoft Team Foundation 和 Visual Studio Services 库来导出和导入 TFS 2015 和 VSTS 积压对象。

https://docs.microsoft.com/en-us/vsts/integrate/concepts/dotnet-client-libraries

https://www.visualstudio.com/en-us/docs/integrate/api/wit/samples#migrating-work-items

我已经通过获取到我的服务器的 VssConnection 并获取 WorkItemTrackingHttpClient 来执行 Wiql 查询和创建工作项。我还有一个查询来识别目标工作项的父级。

我无法弄清楚的是如何添加子工作项与其父项之间的链接。我不知道添加父项的正确 JsonPatchDocument 项路径,或现有 WorkItem 上的正确属性或方法以使用父链接更新它。是否有人有关于使用这些库将父关系添加到工作项的文档链接或特定信息?

以下是上下文的一些代码摘录:

附录:我尝试添加以下代码,但更改不会提交到远程对象,它只存在于本地内存中,我找不到推送更改/更新的方法。

0 投票
1 回答
70 浏览

java - JSON-B 和 JSON API 之间缺少桥梁?

我正在尝试实现一个将 JSON-PATCH (RFC 6902) 应用于使用 JSON-B 注释的对象的函数。

我得出了以下解决方案:

这种方法的问题在于过程中发生的序列化/反序列化的数量,更不用说实现不流畅。

我是否遗漏了 API 中的某些内容以简化此修补功能的实现,或者仅仅是 JSON-B 和 JSON 之间缺少一座桥梁,例如:

0 投票
2 回答
585 浏览

json - 如何使用 json diff 合并 json 子对象并合并?

我有两个这样的json文件:

json1

json 2

合并联合后需要的 json

如何通过使用可用工具获取 json diff 和合并修补来实现此操作。我不想遍历每个子节点并手动检查。

0 投票
1 回答
928 浏览

typescript - 如何在打字稿中创建一个新的 JsonPatchDocument?

我正在尝试创建一个新的 JsonPatchDocument 如下,

让 PatchDoc = new JsonPatchDocument();

但是以上是不可能的,因为 JsonPatchDocument 是打字稿中的一个接口。任何人都可以帮助如何做到这一点???

我使用 let PatchDoc 创建: JsonPatchDocument;

如果这样做,我将无法将数据添加到 JsonPatchDocument PatchDoc .add( { op: "add", path: "/fields/System.Priority" , value: "1" })

它说在类型 JsonPatchDocument 上不存在 add

0 投票
1 回答
1543 浏览

c# - 用对象数组修补对象

我在一所学校的课程和学生之间存在多对多的关系。这是我的课程:

我正在使用 JsonPatch 修补我的对象。我正在尝试添加到集合中Students,就在集合的末尾:

但是当我提交这个时,我得到一个例外说:

"ClassName": "Microsoft.AspNetCore.JsonPatch.Exceptions.JsonPatchException",

"消息": "值 '[\r\n {\r\n \"CourseId\": \"07264DC9-9FEB-42E2-B1EF-08D58F58C873\",\r\n \"StudentId\": \" FB6E6988-4A56-4CA4-86E2-E23090FAD98F\"\r\n }\r\n]' 对目标位置无效。",

根据 Json Patch 文档,该结构对我来说是正确的。知道为什么它不接受我的格式吗?