首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON补丁规范的解释

JSON补丁规范的解释
EN

Stack Overflow用户
提问于 2013-04-10 23:45:37
回答 1查看 2.9K关注 0票数 3

我有一个关于JSON Patch (RFC 6902)的解释的问题。

假设我有一个如下所示的资源:

代码语言:javascript
复制
{
   "type": "assembly",
   "uri": "http://example.com/campSrv/Assembly/18",
   "name": "/sample",
   "description": "Hello, World Application",
   "created": "2013-03-27T16:15Z",
   ...
}

这个资源的定义表明它可以有一个被定义为字符串数组的名为“tag”的值。但是,此资源当前没有标记,因此我的服务不会序列化不存在的数组。

现在假设我提交了以下HTTP补丁请求:

代码语言:javascript
复制
PATCH http://example.com/campSrv/Assembly/18 HTTP/1.1
Content-Type: application/json-patch

[
  { "op": "add", "path": "/tags/0", "value": "flobbit" }
]

这是否应该创建'tags‘数组并添加'flobbit’作为第一个/唯一的元素,或者我的服务器应该返回一个错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-11 00:05:10

在我看来..。

您的补丁将导致错误,因为tags不存在,并且您不能添加到尚不存在的数组中。

RFC 6902 4.1

..。

但是,对象本身或包含它的数组确实需要

存在,如果不是这样的话,仍然是一个错误。为

例如,以此文档开头的目标位置为"/a/b“的"add”:

{ "a":{ "foo":1}}

不是错误,因为"a“存在,并且"b”将被添加到它的

价值。这是本文档中的一个错误:

{ "q":{ "bar":2}}

因为"a“不存在。

但是,此修补程序将添加一个值为"flobbit"tags字符串。

代码语言:javascript
复制
[
  { "op": "add", "path": "/tags", "value": "flobbit" }
]

此补丁将添加第一个元素为"fobbit"tags数组。

代码语言:javascript
复制
[
  { "op": "add", "path": "/tags", "value": ["flobbit"] }
]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15930516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档