2013-01-03 28 views
4

我正在使用为Google地图编码了多边形的MySQL数据库。当我尝试返回查询为json时,jsonlint抱怨..我不知道为什么它的抱怨,我尝试逃避在拉普隆的“}”,但仍然得到相同的错误。字符串中的JSON转义序列无效

 
Parse error on line 20: 
...   "latlon": "}ciuF|a|[email protected]@[email protected] 
-----------------------^ 
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|[email protected]@[email protected]@UxCjMlApAfFuBpI}E\[email protected]" 
     } 
    ] 
} 
+0

该错误提示有问题早在JSON,而不是在该行... – Evert

回答

4

的问题是,有哪个不是有效的转义序列的前C斜线。

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

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

,因为它试图解析字符串\C这会给你一个语法错误。如果你想在你的财产的价值文字\,你需要逃避它。

"latlon": "}ciuF|a|[email protected]@[email protected]@UxCjMlApAfFuBpI}E\\[email protected]" 

相关的部分从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 
+0

播放解决这个与自己,我花了3条斜线让它解码在PHP中。即。 '\\\ C' – phpisuber01

+0

我想通过使用:

$tmp = str_replace('"', '\"', $maps['lat_lon']); \t \t \t \t \t \t $tmp = str_replace('\\', '\\\\', $tmp);
是否有任何其他特殊字符我需要逃避,可能是在一个JSON字符串? – Dennis

+0

你是连接你自己的字符串还是使用'json_encode'? – Dennis

相关问题