javascript循环通过json响应

时间:2014-11-13 14:10:19

标签: javascript jquery json

我想循环我的json响应。我的json响应看起来像这样

{"line":[{"type":"bank","name":"ABN","account":"NL47ABNA0442660960","description":"Bijgewerkt t\/m 30-10-2014","balance":"6.266,55","image":""},{"type":"bank","name":"Rabo","account":"NL89RABO0177896647","description":"","balance":"0,00","image":""}],"total":"6.266,55"}

我想要的是一个遍历所有行的foreach循环,所以我得到每行的键和值。

5 个答案:

答案 0 :(得分:5)

您可以像这样迭代:(添加代码注释以供解释)

var result = document.getElementById("result");
var json = '{"line":[{"type":"bank","name":"ABN","account":"NL47ABNA0442660960","description":"Bijgewerkt t\/m 30-10-2014","balance":"6.266,55","image":""},{"type":"bank","name":"Rabo","account":"NL89RABO0177896647","description":"","balance":"0,00","image":""}],"total":"6.266,55"}';

var obj = JSON.parse(json);
// json object contains two properties: "line" and "total".
// iterate "line" property (which is an array but that can be iterated)
for (var key in obj.line) {
    // key here is the index of line array
    result.innerHTML += "<br/>" + key + ": ";
    // each element of line array is an object
    // so we can iterate over its properties
    for (var prop in obj.line[key]) {
        // prop here is the property
        // obj.line[key][prop] is the value at this index and for this prop
        result.innerHTML += "<br/>" + prop + " = " + obj.line[key][prop];
    }
}
// "total" is a property on the root object
result.innerHTML += "<br/><br/>Total = " + obj.total;
<p id="result"> </p>

演示小提琴:http://jsfiddle.net/abhitalks/ajgrLj0h/2/

答案 1 :(得分:1)

var json = {"line":[{"type":"bank","name":"ABN","account":"NL47ABNA0442660960","description":"Bijgewerkt t\/m 30-10-2014","balance":"6.266,55","image":""},{"type":"bank","name":"Rabo","account":"NL89RABO0177896647","description":"","balance":"0,00","image":""}],"total":"6.266,55"}; 
   for(var i = 0; i < json.line.length; i++)
   {
       console.log("Type: " + json.line[i].type + " Name: " + json.line[i].name + " Account: " + json.line[i].account + " Description: " + json.line[i].description + " Balance: " + json.line[i].balance + " Image: " + json.line[i].image); 
   }

你可以这样做......

答案 2 :(得分:1)

var json = {"line":[{"type":"bank","name":"ABN","account":"NL47ABNA0442660960","description":"Bijgewerkt t\/m 30-10-2014","balance":"6.266,55","image":""},{"type":"bank","name":"Rabo","account":"NL89RABO0177896647","description":"","balance":"0,00","image":""}],"total":"6.266,55"};

if(json.line !== undefined && json.line.length > 0){
    var key,value;
    json.line.map(function(lineObject){        
        for (key in lineObject) {
            value = (lineObject[key] == '')?'unknown': lineObject[key];
            console.log(key+":"+ value);
        }
        console.log("---------------------");
    });
}

http://jsfiddle.net/ddw7nx91/

答案 3 :(得分:0)

var obj = {"line":[]} //your json here

for(var i=0; i<obj.line.length; i++) {
console.log(obj.line[i].type)
}

obj.line是一个数组,所以你可以让他的长度成为一个循环吧。

答案 4 :(得分:0)

这将创建一个行数组,每个行都包含一个键对象和一个值对象。

var response = JSON.parse( {'your':'JSON'} );
var lines = [];

$.each( response, function( line ) {//loop through lines in response
    var keys = [];
    var values = [];
    $.each( line, function( obj ) {
        keys.push( Object.keys(obj) );//get keys
        for( var key in obj ) {
            values.push(obj[key]);//get values
        }
    });
    lines.push({ {'keys':keys},{'values':values} });
});