为什么 json 指针使用代字号作为转义字符?

Why does json pointer use tilde as the escape character?

JSON指针表示法 (rfc6901) 允许您将 JSON 文档中的位置表示为字符串。

我很惊讶地看到规范使用波浪号 '~' 作为转义字符? 为什么选择这个而不是像反斜杠 '' 这样更传统的东西?

不能使用反斜杠的原因是反斜杠在 JSON 中已经有了意义,并且希望能够在 JSON 文档中包含一个 JSON 指针而无需双重转义。

如果您仔细阅读规范,您会注意到:

  1. 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 中波浪号的对位。