循环通过JSON数据

时间:2011-11-15 09:49:43

标签: jquery json loops

我有JQuery的JSON数据返回 -

[["001","Item1","2011-03-15","2011-06-15"],["001","Item2","2011-07-15","2011-11-15"]]

如何获得每个值“001”,“Item1”......

8 个答案:

答案 0 :(得分:5)

var json = [["001","Item1","2011-03-15","2011-06-15"],["001","Item2","2011-07-15","2011-11-15"]];
$.each(json, function(key1, item) {
  $.each(item, function(key2, itemvalues) {
    var test = itemvalues;
  });
});

答案 1 :(得分:2)

var json_data = [["001","Item1","2011-03-15","2011-06-15"],["001","Item2","2011-07-15","2011-11-15"]];
var json_length = json_data.length;
var inner_length = 0;

for (var i = 0; i<json_length; i++)
{
    inner_length = json_data[i].length;
    for( var j = 0; j<inner_length; j++ ){
        alert(json_data[i][j]);
    }
}

我注意到它不是真正的JSON对象,但它是一个数组结构。所以我们只有2个for循环,以获取所有值。上面的代码应该显示这些数组中的所有值。

此外,您应该始终在for循环之外的某处定义数组长度。这样可以获得更好的代码和更快的执行速度,因为您不是每次都调用length方法。

编辑:我想补充说在某些情况下使用$ .each可能不是首选方法: http://pure-essence.net/2011/09/02/jquery-each-vs-javascript-for-loop/

使用本机JS总是更快或至少与jQuery相同。

答案 2 :(得分:0)

您必须解析JSON,并迭代数组元素。

var datas = JSON.parse(yourJSON); // you get an array of arrays
var firstArray = datas[0];        // get the first of them
for(var i = 0, len = firstArray.length; i < len; i += 1) {
    // you access the elements
}

对其他人(循环或其他)做同样的事情。

答案 3 :(得分:0)

假设:

    var x = [["001","Item1","2011-03-15","2011-06-15"],["001","Item2","2011-07-15","2011-11-15"]];

Then this:

    alert(x[0][0]);

将警告“001”值。

答案 4 :(得分:0)

var data = [["001", "Item1","2011-03-15"],["001", "Item2","2011-07-15"]];

for ( var i = 0, data_len = data.length; i < data; i++ ) {
    for ( var j = 0, item_len = data[i].length; j < item_len; j++ ) {
         var item = data[i][j];
         console.log(item);
    }
}

答案 5 :(得分:0)

for ( var i in json ) 
 for ( var j in json[i] ) 
  alert(json[i][j] )

答案 6 :(得分:0)

这不是真正的JSON。真正的JSON将如下所示:

[{ “键”: “值”},{ “键”: “值”}]

你的只是​​一个数组。所以只需迭代两个循环即可打印。

但是如果你想迭代JSON数据......请执行以下操作:

<小时/> 如果您使用的是JAVA,则需要执行以下操作:

import org.json.JSONArray;

public some_function () {

try {
   String json = "you json string";
   JSONArray jsonArr = new JSONArray (json);
}
catch (org.json.JSONException e) {
}
for (int i=0; i<jsonArray.length();j++)  {
     JSONObject json = new JSONObject(jsonArr.get(i));
     JSONArray names= json.names();
     JSONArray values = json.toJSONArray(names);

     for (int j=0;j<values.length();j++) 
          //print "values";
     }
}

如果您使用的是Python,请执行以下操作:

import simplejson as json

json_data = json.loads ("you json string")

for (json in json_data) :
    print json[0]

答案 7 :(得分:0)

在jQuery中,您可以使用map展平您的数组:

var data = $.map(your_array_from_json, function(e) { return e; });

data之后是包含数据中所有元素的一维数组,例如:

["001","Item1","2011-03-15","2011-06-15","001","Item2","2011-07-15","2011-11-15"]