字符串中的 JSON 转义序列无效

Den*_*nis 7 php string json

我正在使用一个为谷歌地图编码多边形的 MySQL 数据库。当我尝试将查询作为 json 返回时,jsonlint 抱怨......我不知道它为什么抱怨,我确实尝试在 latlon 中转义“}”,但仍然遇到相同的错误。

第 20 行解析错误:
... "latlon": "}ciuF|a|pNcUr@d@es@
-----------------------^
期待 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

我的 json 是:

{
    “地图”:[
        {
            "group_id": "0",
            "user_id": "113",
            “团队名字”: ””,
            “笔记”: ””,
            "field_id": "",
            "field_name": "西牧场",
            "field_notes": "",
            "date_created": "12/31/2012",
            “英亩”:“”
        }
    ],
    “多边形”:[
        {
            "polygon_id": "",
            "field_id": "1",
            "英亩": "92",
            "latlon": "}ciuF|a|pNcUr@d@es@fIHXaNtCn@UxCjMlApAfFuBpI}E\ChJdEl@xAtE"
        }
    ]
}

Den*_*nis 10

问题是在 C 之前有一个斜杠,它不是有效的转义序列。

"}ciuF|a|pNcUr@d@es@fIHXaNtCn@UxCjMlApAfFuBpI}E \ChJdEl@xAtE"

JSON.parse('"\\C"');
Run Code Online (Sandbox Code Playgroud)

这会给你一个语法错误,因为它试图解析字符串\C。如果您想\在属性值中使用文字,则需要对其进行转义。

"latlon": "}ciuF|a|pNcUr@d@es@fIHXaNtCn@UxCjMlApAfFuBpI}E\\ChJdEl@xAtE"
Run Code Online (Sandbox Code Playgroud)

官方语法的相关部分:

string
    ""
    " chars "
chars
    char
    char chars
char
    any-Unicode-character-
        except-"-or-\-or-
        control-character
    \"
    \\
    \/
    \b
    \f
    \n
    \r
    \t
    \u four-hex-digits 
Run Code Online (Sandbox Code Playgroud)