7

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

第 20 行的解析错误:
...“纬度”:“}ciuF|a|pNcUr@d@es@
----------------------^
期待 'STRING'、'NUMBER'、'NULL'、'TRUE'、'FALSE'、'{'、'['

我的json是:

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

1 回答 1

11

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

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

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

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

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

官方语法的相关部分:

string
    ""
    " chars "
chars
    char
    char chars
char
    any-Unicode-character-
        except-"-or-\-or-
        control-character
    \"
    \\
    \/
    \b
    \f
    \n
    \r
    \t
    \u four-hex-digits 
于 2013-01-03T12:51:26.500 回答