如何从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]);
}

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

最新更新