以json为例:
[
{"offspring0":"John"},
{"offspring1":"Anna"},
{"offspring2":"Peter"}
]
我可以知道有多少offspring
:
offspringCount = (jsonString.match(/offspring/g) || []).length; //jsonString is the json above
这会返回3. 现在,我怎样才能获得所有这些后代的价值?我试过了:
json = JSON.parse(jsonString);
alert(json[0].offspring[0]);
但这会引发Uncaught TypeError: Cannot read property '0' of undefined
,因为offspring
不是数组。
我也尝试过:
alert(json[0]."offspring0");
但获得Uncaught SyntaxError: Unexpected string
我的目的是遍历所有offspring[number]
并获取值,期待这样的事情:
for(x=0; x<offspringCount; x++){
alert(json[0].offspring[x]);
}
注意我不处理JSON的制作,我只向服务器请求它。
答案 0 :(得分:2)
试试这个:
var jsonString = '[{"offspring0":"John"},{"offspring1":"Anna"},{"offspring2":"Peter"}]';
var array = JSON.parse(jsonString);
var offsprings = [];
for (var i=0; i<array.length; ++i) {
for (var key in array[i]) {
if (key.match(/^offspring[0-9]+$/)) {
offsprings.push(array[i][key]);
}
}
}
document.getElementById('output').innerHTML = JSON.stringify(offsprings);
<div id="output"></div>
答案 1 :(得分:1)
我认为这段代码可以帮到你
json = JSON.parse(jsonString);
alert(json[0]['offspring0']);
这意味着,当你需要循环数组时,你需要做这样的事情:
for(var index = 0; index < json.length; index++) {
alert(json[index]['offspring' + index]);
}