问题标签 [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 回答
459 浏览

json - 使用 JSON-PATCH 格式

我对 RFC6902 中指定的 JSON-PATCH 格式有疑问。

据我了解,这种格式适用于 PATCH 请求。有没有办法在响应中使用它,可能是使用部分内容代码?我有一个特殊情况,在这种情况下,我使用 PATCH 请求的操作可能会导致资源的其他更改,并且由于资源本身很大,我不想将完整的表示发回。

RFC 中讨论的格式的使用范围有多广?

0 投票
2 回答
2895 浏览

c# - restclient 支持 json-patch 吗?

我在 RestSharp 的 RestClient中使用 POST 方法和 JSON-Patch 操作时遇到问题(请参阅 RFC: https ://www.rfc-editor.org/rfc/rfc6902)。AddBody() 包含如下内容:

它出错了。我不知道如何json-patch在体内传递操作。我已经尽我所能。这个问题有解决方案吗?

0 投票
1 回答
1270 浏览

c# - 在 Ramone 中使用 json-patch 时出现不支持的媒体类型错误

更新:我下载了 Ramone 项目,将其添加到我的项目中,然后使用调试器再次运行该应用程序。错误如下所示:

公共 MediaTypeWriterRegistration GetWriter(Type t, MediaType mediaType) { ...

CodecEntry entry = SelectWriters(t, mediaType).FirstOrDefault(); => 这一行抛出错误

... } CodecManager.cs 中发生错误。我试图弄清楚为什么它不能识别 json-patch 媒体类型。可能是因为作者没有正确注册吗?我正在调查它。如果您发现问题,请告诉我。由于您是该库的作者,因此您更容易找出问题所在。我将不得不通过所有的代码文件和方法来找到问题。谢谢!

我很高兴知道 Ramone 库支持 json-patch 操作,但是当我尝试它时,出现以下错误:

415-不支持的媒体类型

这与我使用 RestSharp 时遇到的错误相同。我想可能是 RestSharp 不支持 json-patch 和错误,所以我决定尝试 Ramone lib,但我仍然得到同样的错误。Endpoint 没有问题,因为当我使用 Postman 尝试相同的命令时,它可以工作,但是当我在 C# 中以编程方式尝试它时,它会引发不受支持的媒体类型错误。这是我的代码:

端点信息可在此处获得:http: //developers.box.com/metadata-api

我在以下文章中使用了 json-patch 部分作为参考:

http://elfisk.dk/Ramone/Documentation/Ramone.pdf

顺便说一句,我尝试了 Patch() 方法(如上面的参考文章所示),但导致“方法不允许”,所以我使用了 Put() 方法,该方法似乎有效,但由于 json-patch 操作而出错。

任何解决此问题的帮助、指导和提示将不胜感激。提前非常感谢。

-假

0 投票
3 回答
11371 浏览

javascript - 从两个对象生成 JSON 补丁

给定两个 Javascript 对象 (AB),有没有办法生成JSON 补丁,以便在应用该补丁时A将对象的属性更改为 object 的属性B

例如,给定假设JSONPatch函数(可能是与下面链接的函数名称相似的函数),需要的是generate_patch函数。

在这个问题中A,并且B是 Javascript 对象。由 RFC6902 创建的补丁是 JSON,它将指示一个操作数组,当应用于A该对象时将变为B. 该generate_patch函数虽然不需要返回 JSON,但为了提高效率,可以返回一个 Javascript 对象,该对象在被调用时会变成 RFC6902 JSON-patch 文档JSON.stringify

我在该主题上找到的项目是:

0 投票
1 回答
424 浏览

javascript - JSON 补丁 rfc6902:顺序操作和索引

在 JSON 补丁中,如何使用索引对同一个数组进行后续操作。例如,考虑

补丁文档(操作)

如果我考虑源的索引,上面的索引是正确的。但是,当我按顺序应用它时,索引不正确。也就是说,如果我删除第 0 和第 1 个索引,则索引 2 处没有元素。

我可以想出几种方法来处理这个问题。将数组上的所有删除操作分组,然后保留一个临时结构以在删除期间保存/操作索引的更改。或者,保持索引相对于变异值

如果该操作被认为是资源的顺序突变,这是有道理的。

有没有这方面的标准。我在规范中看不到任何关于它的内容。A.4。删除数组元素

0 投票
3 回答
1807 浏览

json - How is the tilde escaping in the JSON Patch RFC supposed to operate?

Referencing https://www.rfc-editor.org/rfc/rfc6902#appendix-A.14:

A.14. ~ Escape Ordering

An example target JSON document:

A JSON Patch document:

The resulting JSON document:

I'm writing an implementation of this RFC, and I'm stuck on this. What is this trying to achieve, and how is it supposed to work?

Assuming the answer to the first part is "Allowing json key names containing /s to be referenced," how would you do that?

0 投票
2 回答
1243 浏览

json - 如何将 json-patch 操作存储在 redis 队列中并保证它们的一致性?

我有处理 JSON 对象的协作 Web 应用程序,如下所示:

我的方法是使用带有jsonpatch库的rfc6902 (JSONPatch) 规范来修补 JSON 文档。所有此类文档都存储在 MongoDB 数据库中,如您所知,最后一个文档对于频繁写入非常慢。

为了获得更快的速度和高负载的应用程序,我使用 redis 作为队列来执行补丁操作,如下所示:

我只是将所有此类补丁操作存储在队列中,并在午夜运行 cron 脚本以获取所有补丁并构建完整文档并在 MongoDB 数据库中更新它。

我还不明白如果补丁损坏,我应该怎么做:

上面的补丁不适用于上面的文档,因为tags数组的长度只有 3(根据官方文档https://www.rfc-editor.org/rfc/rfc6902#page-5

因此,当用户在线时,他不会收到任何错误,因为他的补丁操作存储在 redis 队列中,但第二天由于未在 cron 脚本中应用的损坏的补丁,他得到了损坏的文档。

所以我的问题是如何保证存储在 redis 队列中的所有补丁都是正确的并且不会破坏主文档?

0 投票
1 回答
768 浏览

json - RethinkDB 对根据 rfc6902 部分更新 json 文档有用吗?

请分享您对部分更新 JSON 文档的经验。现在我将我的 JSON 文档存储在 MongoDB 中,如下所示:

我需要经常使用rfc6902规范更新我的文档。现在,我做的不是优化的方式,看起来如下(我在这个例子中使用 nodejs/express/mongoose 和 fast-json-patch 模块):

由于 MongoDB 中有两个查询并替换整个文档,因此这不是修补文档的优化方法。所以我正在寻找优化的方法,并想尝试 RethinkDB 来完成这项任务。你能帮我检查一下使用 RethinkDB 的单个查询来检查原子文档更新的可能性吗?还是我应该寻找另一种方法来解决我的问题?

请分享您对部分更新 JSON 文档的经验。

0 投票
1 回答
84 浏览

http - 使用 HTTP PATCH 方法部分上传字节数据的描述格式

我想使用 HTTP PATCH 方法将部分上传的可能性添加到我的 REST 接口。我找到了JSON Patch FormatXML Patch Operation Framework,它们用于部分地通过 PATCH 方法更新(和扩展)现有的 JSON 和 XML 资源。当然还有其他方法来描述补丁指令,例如用于修补不符合PATCH RFC的 JSON 的Firebase格式- 我正在寻找那些符合的格式。

TL;DR:如何描述字节数据的补丁?是否有任何现有的 RFC 或准标准来描述这些补丁,尤其是数据附加?

0 投票
2 回答
16200 浏览

json-patch - 从数组中删除元素的 JSON 补丁格式是什么?

我有以下 JSON 文档,我想从中删除“roles”字段的数组值中的“roleId2”元素:

如何编写 JSON Patch 文档来删除该元素?以下表达式有效吗?

或者,它应该看起来像这样(因为文档中的“角色”值是一个数组)?

从阅读RFC 6902开始,我不清楚哪个(如果有的话)是正确的。RFC 提到了以下行为,但我不确定它是否与此处相关。

如果从数组中删除一个元素,则指定索引上方的任何元素都会向左移动一个位置。