JavaScript:迭代JSON字符串

时间:2012-02-13 17:33:19

标签: javascript jquery json loops

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

我在这里看不到什么。所以希望那里的人可以弄清楚出了什么问题。

3 个答案:

答案 0 :(得分: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,并且不适合迭代数组。

答案 1 :(得分:1)

你只需要声明你的obj变量:

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

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

答案 2 :(得分: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
});