2015-12-04 73 views
-3

錯誤,我通過它獲取使用JSON.parse()時JSON.parse()來對字符串

$jsonStr = JSON.parse(["a:5:{i:0;s:4:"3900";i:1;s:4:"3892";i:2;s:4:"3896";i:3;s:4:"3894";i:4;s:4:"3902";}"]) 

我在下面用一個錯誤,但我需要做的就是內容了,循環。我需要3900,3892,3896,3894,3902,那些是ids,我需要遍歷它們並附加到URL,我可以附加到URL,我只需要遍歷字符串並獲取這些ID。我不必使用JSON.parse,我只需要使用JavaScript。

var jsonStr=$jsonStr; var json=JSON.stringify(jsonStr); json=JSON.parse(json)

+0

這不是有效的JSON我建議你谷歌搜索JSON驗證有是其中的一百萬,他們會指向你的JSON被玷污的地方。 –

+1

輸入不像JSON。這是[PHP轉儲](http://php.net/manual/en/function.serialize.php)嗎? – kay

+2

這是一個序列化的PHP結構。它是**不** ** json。 –

回答

-1

正如其他人所說,你的字符串是無效的JSON。

如果你仍然要提取這些串出來的,你可以使用這個:

var input = 'a:5:{i:0;s:4:"3900";i:1;s:4:"3892";i:2;s:4:"3896";i:3;s:4:"3894";i:4;s:4:"3902";}'; 

var matches = input.match(/:"[^"]*/g).join('').split(':"').slice(1); 

// loop through the result: 
matches.forEach(function (match) { 
    console.log(match); 
}); 

輸出:

3900 
3892 
3896 
3894 
3902 
+0

是的!!!!!非常感謝你,這正是我所需要的,並讓它循環。 – Anthony

2

無效JSON。嘗試通過類似JSONLint的方式運行它,以驗證您是否擁有有效的JSON。請記住:JSON只是一個字符串,它看起來就像是一個Javascript中的標準對象,但所有密鑰必須用雙引號引用

相關問題