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

时间:2013-01-03 12:32:19

标签: php string json

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

Parse error on line 20:
...          "latlon": "}ciuF|a|pNcUr@d@es@
-----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

我的json是:

{
    "maps": [
        {
            "group_id": "0",
            "user_id": "113",
            "group_name": "",
            "note": "",
            "field_id": "",
            "field_name": "West Pasture",
            "field_notes": "",
            "date_created": "12/31/2012",
            "acres": ""
        }
    ],
    "polygon": [
        {
            "polygon_id": "",
            "field_id": "1",
            "acres": "92",
            "latlon": "}ciuF|a|pNcUr@d@es@fIHXaNtCn@UxCjMlApAfFuBpI}E\ChJdEl@xAtE"
        }
    ]
}

1 个答案:

答案 0 :(得分:4)

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

“} ciuF | A | pNcUr @ d @ ES @ fIHXaNtCn @ UxCjMlApAfFuBpI} E \C hJdEl @ xAtE”

JSON.parse('"\\C"');

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

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

official grammar的相关部分:

string
    ""
    " chars "
chars
    char
    char chars
char
    any-Unicode-character-
        except-"-or-\-or-
        control-character
    \"
    \\
    \/
    \b
    \f
    \n
    \r
    \t
    \u four-hex-digits 
相关问题