json.enarse()无法解析json_encode()包含斜杠的字符串的输出

时间:2012-01-09 05:56:26

标签: php jquery json

我从json_encode得到一个包含以下输出的字符串:

["images\/zara\/shoes\/thumbnail",
"images\/hermes\/shoes\/thumbnail",
"images\/hermes\/shoes\/thumbnail"]

我尝试用下面的代码解析它,但它给了我一个错误:

var listofshoes = JSON.parse(data); 
for (var i in listofshoes) {
    $('#pgwrapid').append( $("<p>").text(listofshoes[i]));
}
ERROR: JSON.parse: unexpected character [Break On This Error] return window.JSON.parse( data );`

如何防止这种情况?

3 个答案:

答案 0 :(得分:1)

这不是因为反斜杠。 JSONLint正确解析它。这是因为JSON.parse()必须有字符串参数,并且您正在传递数组。 https://developer.mozilla.org/En/Using_native_JSON#Parsing_JSON.C2.A0strings

  

要将JSON字符串转换为JavaScript对象,只需传递   JSON进入JSON.parse()方法,如下所示:

     

var jsObject = JSON.parse(jsonString);

此处还提到:JSON.parse unexpected character error

示例:

var data = ["images\/zara\/shoes\/thumbnail",
"images\/hermes\/shoes\/thumbnail",
"images\/hermes\/shoes\/thumbnail"];

data_string = JSON.stringify(data);

console.log(JSON.parse(data_string));    // no error
console.log(JSON.parse(data));           // will show error

答案 1 :(得分:0)

$str    = '["images\/zara\/shoes\/thumbnail",
"images\/hermes\/shoes\/thumbnail",
"images\/hermes\/shoes\/thumbnail"]';
$rst    = json_decode($str);
//print_r($rst);
foreach($rst as $val) {
    echo $val;
    echo "<br>";
}

试试这个。

答案 2 :(得分:0)

我怀疑在省略的代码中有某个AJAX调用。 jQuery AJAX方法为您解码JSON字符串,因此不需要JSON.parse()