Omn*_*ity 6 json patch json-patch rfc6902
参考http://tools.ietf.org/html/rfc6902#appendix-A.14:
A.14. ~ 转义排序
示例目标 JSON 文档:
Run Code Online (Sandbox Code Playgroud){ "/": 9, "~1": 10 }
一个 JSON 补丁文档:
Run Code Online (Sandbox Code Playgroud)[ {"op": "test", "path": "/~01", "value": 10} ]
生成的 JSON 文档:
Run Code Online (Sandbox Code Playgroud){ "/": 9, "~1": 10 }
我正在编写这个 RFC 的一个实现,我一直坚持这个。这是要达到什么目的,它应该如何工作?
假设第一部分的答案是“允许引用包含 /s 的 json 键名”,你会怎么做?
该~
字符是 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)
我认为 RFC 中提供的示例并不是经过深思熟虑的,特别是它试图仅通过示例来记录功能,这充其量是模糊的 - 没有提供任何类型的注释。
您可能对以下文件中的解释感兴趣:
这些看起来非常相似,我认为这是由于 Rackspace 和 OpenStack 之间关系的本质造成的:
OpenStack 始于 2010 年,是 Rackspace Hosting 和 NASA 的联合项目 (...)
它实际上提供了一些有用的细节,包括它接受的语法以及引入这些标记背后的基本原理,而不是 RFC 本身。
编辑:JSON 指针似乎有单独的 RFC 6901,可在此处获取,并且上面的 OpenStack 和 Rackspace 规范与其一致。