2013-01-03 55 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

相關問題