问题标签 [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.
spring - Spring Data Rest - PATCH Postgres jsonb 字段
简短的版本是:如何jsonb
使用 Spring Data Rest PATCH 方法修补 Postgres 字段中包含的 JSON 对象?
长版来了,请考虑以下实体:
jsonobject
属于 Postgres 类型jsonb
。这些 getter/setter 是这里提到的 Spring Data Rest 的序列化/反序列化方法。如这些答案中所述,我们还尝试为该字段提供自己的类型。
我们的目标是使用 Spring Data Rest 修补此字段包含的 JSON 对象。
例如:
预期输出:
电流输出:
Spring Data Rest 修补 Example 资源并覆盖每个请求属性的值,而不是尝试挖掘 JSON 对象的属性以仅修补请求的嵌套属性。
这是我们认为 Spring Data Rest 支持application/merge-patch+json
和application/json-patch+json
媒体类型会派上用场的时候。以下是每种媒体类型的输出:
application/merge-patch+json
:
输出:
application/json-patch+json
:
输出:
这归结为相同的想法:仅查找实体属性,并且完全覆盖或未找到。
问题如下:有没有办法让 Spring Data Rest 理解它正在处理一个jsonb
字段,因此寻找 JSON 嵌套属性而不是只查找实体属性?
注意:@Embeddable/@Embedded
最有可能避免使用注释,因为它们意味着知道嵌套的属性名称,这会降低对jsonb
字段的兴趣。
感谢您的阅读。
rest - Kubernetes 战略合并补丁
嗨,我正在关注此文档https://github.com/kubernetes/kubernetes/blob/master/docs/devel/api-conventions.md#strategic-merge-patch以使用 strategy-merge-patch 部分更新 JSON 对象补丁 REST API。该文档说它可以添加或删除对象,但我已经尝试过,每当我向现有 JSON 添加新对象时,它只是替换它而不是添加新对象。我正在尝试修改 OpenShift 3.2 中的 pod 定义。谁能帮助我它是如何工作的,可能是例子。我还需要使用删除操作,我可以按名称删除值。
json - Golang,Couchbase 更新子文档并找到 json 路径
在 couchbase 中更新子文档的最佳方法是什么?我正在讨论嵌套的 json 文档。简单的字段可以使用类似的语法轻松更新,set name = 'Jon Doe'
但是嵌套的 json 文档呢。我已经阅读了官方文档中的所有页面,但所有页面都使用了一个称为keys
或path
json 路径的阶段。
因此,对于像 org.adddress.city.name 这样的复杂嵌套 json,如何从 json 动态或以编程方式查找路径。考虑一个 6-7 级深度的嵌套 json 。它几乎看不到,但它呢。
couchbase 中的子文档更新意味着更新整个文档的一部分或一部分,或者更新可以嵌套的简单字段。
我的方法是找到一个合并 Json 补丁,它将给我更新哪个 json 字段,然后如果该补丁包含嵌套字段,
"address": {
"city": {
"id": "25",
"name": "Atlanta"
}
}
然后使用 mutate_in 函数在 Couchbase 中更新它,我需要那些路径是address.city.id
和address.city.name
。即使在 N1QL 查询中更新文档,我也需要生成我相信的那些路径。
我一直在尝试使用递归函数从 json 生成这些路径,因为你不知道下一个会走多远。这是要点。
我想知道是否有任何其他方式不生成更新复杂子文档的路径。
c# - JsonPatch 保留属性的命名(驼峰式)
我正在使用Microsoft.AspNetCore.JsonPatch
我从这里通过 NuGet 添加的,并在尝试将我的属性匹配回 API 端时卡住了。
在序列化/反序列化时,有什么方法可以保留我的属性的驼峰命名法。
我的简化对象:
JsonPatchDocument<MyObject>
使用操作创建一个时,Replace
我得到了路径/mycamelcaseproperty
。path
但是,在 API 方面,我想通过属性(没有前导 '/')来制作某种 switch-case,比如
问题是:骆驼案是否可以保留,或者我是否必须找到另一种方法来匹配我必须对其执行操作的属性名称?任何想法将不胜感激。
c# - 使用 JSON Patch 将值添加到字典
概述
我正在尝试使用 ASP.NET Core 编写一个 Web 服务,它允许客户端查询和修改微控制器的状态。该微控制器包含许多我在我的应用程序中建模的系统 - 例如,PWM 系统、执行器输入系统等。
这些系统的组件都具有可以使用JSON 补丁请求查询或修改的特定属性。例如,可以使用携带. 为了支持这一点,我正在使用该库。{"op":"replace", "path":"/pwms/3/enabled", "value":true}
AspNetCore.JsonPatch
我的问题是我正在尝试为新的“CAN 数据库”系统实现 JSON Patch 支持,该系统在逻辑上应该将定义名称映射到特定的 CAN 消息定义,但我不知道该怎么做。
细节
下图为 CAN 数据库系统建模。一个CanDatabase
实例在逻辑上应该包含一个形式为 的字典IDictionary<string, CanMessageDefinition>
。
为了支持创建新的消息定义,我的应用程序应该允许用户发送 JSON 补丁请求,如下所示:
在这里,my_new_definition
将定义定义name,并且与之关联的对象value
应反序列化为CanMessageDefinition
object。CanDatabase
然后应该将其存储为字典中的新键值对。
问题是path
应该指定一个属性路径,对于静态类型的对象将是......好吧,静态的(一个例外是它允许引用数组元素,例如/pwms/3
如上所述)。
我试过的
A. Leeroy Jenkins 方法
忘记我知道它不起作用的事实——我尝试了下面的实现(尽管我需要支持动态 JSON Patch 路径,但它只使用静态类型)只是为了看看会发生什么。
执行
测试
结果
在我尝试InvalidCastException
将指定更改应用于JsonPatchDocument
.
地点:
例外:
B. 依赖动态 JSON Patching
一个更有希望的攻击计划似乎依赖于动态 JSON 补丁,其中涉及对ExpandoObject
. 这允许您使用 JSON 补丁文档来添加、删除或替换属性,因为您正在处理动态类型的对象。
执行
测试
结果
进行此更改允许我的这部分测试运行而不会引发异常,但 JSON Patch 不知道要反序列化为什么value
,导致数据作为 aJObject
而不是 a存储在字典中CanMessageDefinition
:
是否有可能“告诉” JSON Patch 如何反序列化信息?也许类似于在 上使用JsonConverter
属性Definitions
?
概括
- 我需要支持向字典添加值的 JSON 补丁请求
- 我试过走纯静态路线,但失败了
- 我尝试过使用动态 JSON 补丁
- 这部分有效,但我的数据存储为
JObject
类型而不是预期类型 - 是否有一个属性(或其他一些技术)可以应用于我的属性以使其反序列化为正确的类型(不是匿名类型)?
- 这部分有效,但我的数据存储为
java - Spring-sync 中相同类类型的 ClassCastException
我使用Spring-sync作为RFC 6902 (JSON Patch)
. 客户端向我发送一个JsonNode
表示要应用于服务器对象的操作。
我的代码如下:
我有一个意想不到的 JavaClassCastException
告诉我该对象不能转换为相同的类型!!?? 这怎么可能?
在堆栈跟踪下方:
注意:我的类是由相同的加载的classloader
,它是Serializable
.
我在用着 :
- 弹簧同步:1.0.0.M1
json - 修补 JSON 补丁的最有效方法是什么?
说,我有这个 JSON 补丁,它在groups
数组中添加了一些东西
我需要为此补丁制作一个补丁,删除[ 0.111, "pretzel" ]
. 通常我可以使用操作remove
。
问题是,我不能确定饼干/饼干/椒盐脆饼补丁会出现哪个数字。我不知道它是数组中的第二个,还是第五个,因为用户可能会应用另一个补丁,将某些内容添加到数组中。
解决此问题的最有效方法是什么,无需制作补丁的精确副本但没有pretzel
?
java - 在 RFC 6902 Json 补丁中处理文件上传
我正在开发一个应用程序,用户可以在其中更新他们的信息。目前,RFC 6902 Json-patch
用于通过基本 HTML 表单更新文本信息(名字、姓氏、电话...)。
用户现在可以将图像添加到他们的个人资料中。有什么方法可以Json-patch
用来执行多部分操作吗?
注意:图像存储在文件系统中。所以在客户端,只给出图片路径,提交表单后才可以更新。我的 dto 如下:
我认为的解决方案:
由于defaultMedia
是String类型,Json-patch
可以用来更新图片路径。这个想法是在提交表单时,执行Multipart POST
上传图像并获取其 URL 的请求。然后将defaultMedia
我DTO
的设置为新的 URL。
在表单提交时服务器端发生错误的情况下,此解决方案可以创建未使用的图像。所以我需要添加一些东西来清理文件系统。
有没有更简单的解决方案可以满足我的需求?
我在用着 :
- 春季启动:1.5.1
- 角度 2:2.4.5
java - 在 Spring Boot Data Rest 应用程序中保护 JSON-PATCH 路径
我正在使用一个漂亮的普通spring-boot-starter-data-rest
设置并启用了该PATCH
方法。一切正常,但我有一个安全问题,想知道缓解它的推荐方法是什么。
问题是PATCH
path
s 允许从不同的端点更新可达实体。所以,假设我有一个comments
端点和一个article
端点。每条评论与其文章都有一对一的关联。有权编辑评论的用户可以执行以下操作:
从而更改文章的标题!
显然这不好。
在这种情况下,对于 API 的其他部分,与“文章”的关联需要是可遍历的。但它必须是只读的。
那么......我如何在春天完成这个?
拦截请求?实现处理程序方法?从头开始编写我自己的控制器?
谢谢!
c# - 通过对象 ID 更新数组对象的 jsonpatch 路径
我试图找出修补对象集合的最佳方法。我正在尝试更改许多对象的排序顺序,并且认为 jsonpatch 可能是正确的方法。我的对象看起来像:
我创建了一个端点,它允许补丁请求使用 jsonpatch 请求更新集合中的多个对象,如下所示:
我想要做的是在 jsonpatch 路径中使用 ID 属性。我当前的对象结构可能吗?它看起来像:
我需要做什么才能发出这样的补丁请求?