处理 json,其中 json 数组的数量是动态的


Processing json where the number of json array is dynamic

我有一个从php到ajax的json响应。事情是取决于在文本框中输入的值,json数组的数量会有所不同。示例:有时它可能会返回{"count1":10, "ccc1":30},有时像这样{"count1":10, "ccc1":32, "count2":40, "ccc2":123,"count3":32,"ccc3":21}。我以这种方式提取 jquery 中的值:

success: function(response){
    var count = response.count1;
    //do something
}

但是现在由于计数的数量不同,我使用了循环。问题是我可以弄清楚我收到了多少,但我如何处理它们?var count = response.count 需要是特定的,对吗?我不能像这样随意地插入任何字符串:

var count = 0;    
while(something){
    count = count + 1;
    var str = "count"+count;
    var whatever = response.str;
}

那么,在这种情况下,有人可以帮助我提供合适的解决方案吗?

你走在正确的轨道上。这样的东西应该适合你。

var i = 1;
while(response['count' + i]) {
    var count = response['count' + i++];
}

您可以像访问数组索引一样访问属性。 所以response['count'+i]工作。

遍历所有属性并将它们添加到变量中,如下所示。

var response = { "count1": 10, "ccc1": 32, "count2": 40, "ccc2": 123, "count3": 32, "ccc3": 21 };
var count = 0;
for (var prop in response) {
    if (prop.startsWith('count'))
        count += response[prop];
}
console.log(count);

要检索所有值jQuery $.each

请使用函数。

var data_tmp = '{"count1":10, "ccc1":32, "count2":40, "ccc2":123,"count3":32,"ccc3":21}';
var data = $.parseJSON(data_tmp);
    
   
 $.each(data, function(k,val){
  if(k.toLowerCase().indexOf("count") >= 0){
      $('.wr').append('<div>' + val + '</div>')
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div class="wr"></div>

success: function(response){
var count = response.count1;
    var object = JSON.parse(response);
    alert(object.length);
    for (i = 0; i < object.length; i++) { 
        console.log(object[i]);
    }
}