2012-01-09 310 views
1

我得到以下輸出的字符串從json_encodejson_encode的輸出()含有斜線的字符串不能被JSON.parse(解析)

["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
$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>"; 
} 

試試這個。

+1

代碼不起作用 – sajid 2012-01-09 06:40:47

+0

@sajid:有錯誤? – 2012-01-09 07:18:40

1

這不是因爲反斜槓。 JSONLint正確解析它。這是因爲JSON.parse()必須有字符串參數,並且你正在傳遞一個數組。 https://developer.mozilla.org/En/Using_native_JSON#Parsing_JSON.C2.A0strings

To convert a JSON string into a JavaScript object, you simply pass the JSON into the JSON.parse() method, like this:

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 
0

我懷疑有一個AJAX調用某處省略代碼。 jQuery AJAX方法爲你解碼JSON字符串,所以JSON.parse()是沒有必要的。