JSON Patch RFC 中的波浪号如何转义?

Omn*_*ity 6 json patch json-patch rfc6902

参考http://tools.ietf.org/html/rfc6902#appendix-A.14

A.14. ~ 转义排序

示例目标 JSON 文档:

{
  "/": 9,
  "~1": 10
}
Run Code Online (Sandbox Code Playgroud)

一个 JSON 补丁文档:

[
  {"op": "test", "path": "/~01", "value": 10}
]
Run Code Online (Sandbox Code Playgroud)

生成的 JSON 文档:

{
  "/": 9,
  "~1": 10
}
Run Code Online (Sandbox Code Playgroud)

我正在编写这个 RFC 的一个实现,我一直坚持这个。这是要达到什么目的,它应该如何工作?

假设第一部分的答案是“允许引用包含 /s 的 json 键名”,你会怎么做?

iva*_*sim 5

~字符是 JSON 指针中的关键字。因此,我们需要将其“编码”为~0. 引用jsonpatch.com

如果您需要引用名称中带有 ~ 或 / 的键,则必须分别使用 ~0 和 ~1 对字符进行转义。例如,要从 { "foo/bar~": "baz" } 获取 "baz",您将使用指针 /foo~1bar~0

所以本质上,

[
  {"op": "test", "path": "/~01", "value": 10}
]
Run Code Online (Sandbox Code Playgroud)

当解码收益率

[
  {"op": "test", "path": "/~1", "value": 10}
]
Run Code Online (Sandbox Code Playgroud)


rr-*_*rr- 1

我认为 RFC 中提供的示例并不是经过深思熟虑的,特别是它试图仅通过示例来记录功能,这充其量是模糊的 - 没有提供任何类型的注释。

您可能对以下文件中的解释感兴趣:

这些看起来非常相似,我认为这是由于 Rackspace 和 OpenStack 之间关系的本质造成的:

OpenStack 始于 2010 年,是 Rackspace Hosting 和 NASA 的联合项目 (...)

它实际上提供了一些有用的细节,包括它接受的语法以及引入这些标记背后的基本原理,而不是 RFC 本身。

编辑:JSON 指针似乎有单独的 RFC 6901,可在此处获取,并且上面的 OpenStack 和 Rackspace 规范与其一致。