2012-02-13 63 views
-2

JSON字符串:的JavaScript:迭代JSON字符串

'["Colour","Audio","Effect"]' 

我在通過這個迭代的問題,雖然這是一個簡單的解決方案。我曾嘗試過:

for (var o in obj) { } // iterates through each individual character of the json object 

for (var i = 0; i < obj.length; i++) { } // same as above 

$.each(obj, function(i, v) { }); // same as above 

我在這裏沒有看到什麼。所以希望有人能找出問題所在。

+5

這是一個簡單的'array',不'json'。 – gdoron 2012-02-13 17:35:10

+0

這是一個字符串。請注意,我沒有將它實例化爲一個數組。下次請理解代碼。 – 2012-02-13 17:41:43

+0

@BrianGraham:當然你明白在發佈JavaScript和JSON結構之間可能會有歧義。如果你通過調用它像*服務器端的JSON標記*那麼顯式是有幫助的。 – 2012-02-13 17:44:55

回答

4

首先,解析JSON字符串:

var jsonStr = '["Colour","Audio","Effect"]'; 
var obj = JSON.parse(jsonStr); 

// Alternatively, write out the JSON directly 
// var obj = ["Colour","Audio","Effect"]; 

然後,要麼

for (var i = 0; i < obj.length; i++) { } 

$.each(obj, function(i, v) { }); 

for (var o in obj) { }遍歷數組的原始屬性,包括length,並且不適合迭代數組。

+0

它不是json字符串,它是一個字符串數組。 – gdoron 2012-02-13 17:37:16

+1

@gdoron如果第一個代碼塊是所述字符串的表示而不是JavaScript代碼,則它可能是JSON字符串。請注意我是如何在這個答案的第一行中定義它的。 – phihag 2012-02-13 17:39:17

+0

@ PHPhag謝謝,我知道這將是一件簡單的事情。 – 2012-02-13 17:42:04

1

你只需要聲明你的OBJ變量:

var obj = ["Colour","Audio","Effect"]; 

for (var i = 0; i < obj.length; i++) { 
    alert(obj[i]); 
} 
1

您需要解析JSON字符串才能使用它。

["Colour","Audio","Effect"]是一個數組,'["Colour","Audio","Effect"]'是一個字符串。

您需要使用JSON.parse('["Colour","Audio","Effect"]')(或$.parseJSON)將JSON字符串轉換爲可用的JavaScript數組。

var obj = '["Colour","Audio","Effect"]'; 
$.each(obj, function(i, v) { 
    console.log(v); // prints each letter 
}); 

var obj = ["Colour","Audio","Effect"]; // or $.parseJSON('["Colour","Audio","Effect"]') 
$.each(obj, function(i, v) { 
    console.log(v); // prints each element 
});