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

标签 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"
        }
    ]
}

最佳答案

问题是 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"

来自 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 

关于php - 字符串中的无效 JSON 转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14139031/

相关文章:

c# - 在 C# 中反序列化嵌套数组 JSON 返回空值

php - 更新、连接和 WHERE MySQL

php - 优先顺序 Javascript/PHP/Jquery Json - 从用户获取浏览器资源

带有中断数据库的 PHP 邮件

c - 如何编写删除字符串一部分的 C 函数?

c - 如何使用 : "\\" or "\"? 分割字符串

C 字符串数组输出不正确

java - 如果 JSON 包含 null,则出现 NullPointerException

php - 协助 PHP 和 MySQL 中的搜索功能

php - Symfony 2文件上传设置默认文件