以此为例:
[
{"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]);
}
Note 我不处理JSON的制作,我只向服务器请求。
尝试以下:
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>
i thit this代码可能会帮助您
json = JSON.parse(jsonString);
alert(json[0]['offspring0']);
这意味着,当您需要在数组中循环时,您需要做类似的事情:
for(var index = 0; index < json.length; index++) {
alert(json[index]['offspring' + index]);
}