如何从json获取未知ammount给定元素的值

时间:2015-05-09 12:53:21

标签: javascript json

以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的制作,我只向服务器请求它。

2 个答案:

答案 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]);
}