为什么 json 指针使用代字号作为转义字符?
Why does json pointer use tilde as the escape character?
JSON指针表示法 (rfc6901) 允许您将 JSON 文档中的位置表示为字符串。
我很惊讶地看到规范使用波浪号 '~' 作为转义字符?
为什么选择这个而不是像反斜杠 '' 这样更传统的东西?
不能使用反斜杠的原因是反斜杠在 JSON 中已经有了意义,并且希望能够在 JSON 文档中包含一个 JSON 指针而无需双重转义。
如果您仔细阅读规范,您会注意到:
JSON String Representation
A JSON Pointer can be represented in a JSON string value. Per
[RFC4627], Section 2.5, all instances of quotation mark '"' (%x22),
reverse solidus '\' (%x5C), and control (%x00-1F) characters MUST be
escaped.
Note that before processing a JSON string as a JSON Pointer,
backslash escape sequences must be unescaped.
另一个原因是允许 URI 编码。
根据 this discussion,它几乎是插入符号“^”。
另请注意,波浪号“~”可以在 URL 中使用,而脱字符“^”则不允许。
尽管请参阅 http://jkorpela.fi/tilde.html 以了解 URL 中波浪号的对位。
JSON指针表示法 (rfc6901) 允许您将 JSON 文档中的位置表示为字符串。
我很惊讶地看到规范使用波浪号 '~' 作为转义字符? 为什么选择这个而不是像反斜杠 '' 这样更传统的东西?
不能使用反斜杠的原因是反斜杠在 JSON 中已经有了意义,并且希望能够在 JSON 文档中包含一个 JSON 指针而无需双重转义。
如果您仔细阅读规范,您会注意到:
JSON String Representation
A JSON Pointer can be represented in a JSON string value. Per
[RFC4627], Section 2.5, all instances of quotation mark '"' (%x22),
reverse solidus '\' (%x5C), and control (%x00-1F) characters MUST be
escaped.Note that before processing a JSON string as a JSON Pointer,
backslash escape sequences must be unescaped.
另一个原因是允许 URI 编码。
根据 this discussion,它几乎是插入符号“^”。 另请注意,波浪号“~”可以在 URL 中使用,而脱字符“^”则不允许。 尽管请参阅 http://jkorpela.fi/tilde.html 以了解 URL 中波浪号的对位。