我从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 );`
如何防止这种情况?
答案 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()
。