1

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

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

4

1 回答 1

0

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

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

  1. JSON 字符串表示

    JSON 指针可以用 JSON 字符串值表示。根据
    [RFC4627] 第 2.5 节,引号 '"' (%x22)、
    反斜线 '\' (%x5C) 和控制 (%x00-1F) 字符的所有实例都必须
    转义。

    请注意,在将 JSON 字符串作为 JSON 指针处理之前,
    必须对反斜杠转义序列进行转义。

另一个原因是允许 URI 编码。

根据这个讨论,它几乎是插入符号'^'。另请注意,URL 中允许使用波浪号“~”,而不允许使用插入符号“^”。尽管请参阅http://jkorpela.fi/tilde.html以了解 URL 中波浪线的对位。

于 2018-06-14T11:25:50.940 回答