JSON.parse:使用php转义错误的字符

时间:2014-01-28 11:47:45

标签: javascript php jquery json

我遇到了json解析的问题。 我在php中有这个:

 json_encode(getTeams(),JSON_HEX_APOS);

它返回了大量数据。

示例数据: 为了更清楚,我可以说:

my_encoded_data = 
     {
        "13": "Germany-1",
        "14": "Russia-1",
        "15": "Switzerland-1",
        "16": "Canada-1",
        "17": "USA-1",
        "18": "USA-2",
        "19": "Germany-2",
        "20": "Italy-1",
        "21": "Switzerland-2",
        "22": "Austria-1",
        "23": "Italy-2",
        "24": "Netherlands-1",
        "25": "Poland-1",
        "26": "Latvia-1",
        "27": "Russia-2",
        "28": "Czech Republic-1",
        "29": "Great Britain-1",
        "30": "France-1",
        "31": "Canada-2",
        "32": "Slovakia-1",
        "43": "A. Florschütz/T. Wustlich",
        "44": "P. Leitner/A. Resch",
        "46": "G. Albrecht/E. Pothier",
        "48": "C. Moffat/M. Moffat",
        "50": "V. Boizov/D. Khamkin",
        "51": "M. Kuzmitch/J. Veselov",
        "53": "T. Schiegl/M. Schiegl",
        "56": "P. Griffal/D. Joye",
        "59": "A. Linger/W. Linger",
        "62": "G. Plankensteiner/O. Haselrieder",
        "65": "A. Sics/J. Sics",
        "68": "C. Oberstolz/P. Gruber"
    }

我已经测试了这些数据,将其分成小部分以便在jsonlint中进行验证。它告诉我有效的json。 然后我在javascript中分配了它:

window.objteamsFromServer  = my_encoded_data;

然后我想在json中解析它:

arrSearch = window.objteamsFromServer;

它给了我这个错误:

JSON.parse: bad escaped character 

我该如何解决这个问题?

如果需要任何信息,请告诉我。

谢谢,
Awlad

2 个答案:

答案 0 :(得分:1)

很难从您的问题确切地说明my_encoded_data是什么,但听起来好像是将json_encode的结果输出到JavaScript源代码中,例如(从浏览器的角度来看):

window.objteamsFromServer = {
    "13": "Germany-1",
    "14": "Russia-1",
    "15": "Switzerland-1",
    "16": "Canada-1",
    "17": "USA-1",
    // ...and so on
};

然后尝试使用JSON.parse解析它。

你不会这样做。 JavaScript引擎已经解析了该对象初始化程序(它不是JSON,它是JavaScript源代码),所以你只需要直接使用该值:

console.log(window.objteamsFromServer[13]); // "Germany-1"

答案 1 :(得分:0)

我猜您可能因为以下行而收到此错误:

"43": "A. Florschütz/T. Wustlich",

请注意上面名称中的“ü”。

一种方法是在服务器端对数据进行编码,然后在客户端对其进行解码。 使用JavaScripts decodeURIComponent函数在客户端进行解码。

对于数据的服务器端编码,请参阅php文档。