2014-10-09 239 views
0

我有json对象,我想要打印它的key/value对组合。但我的对象是嵌套的一个。所以我想遍历每个对象并显示它的键/值对。通过嵌套的json对象循环并显示kay /值对

小提琴:http://jsfiddle.net/ydzsaot5/

代码:

var html=''; 
var contextObj = {"CategoryID":"1","BillerID":"23","BillerName":"MERCS","RequestType":"QuickPay","AccountNo":"1234567890","Authenticator":"{\"EmailAddress\":\"dfgsdfgsdfg\",\"MobileNumber\":\"65-4576573\",\"ID\":\"4572-4756876-8\"}","Token":"3C639AE65"}; 

html = getKeyValueJson(contextObj, html); 
$('div').html(html); 
function getKeyValueJson(obj, html) { 
    $.each(obj, function (key, value) { 
     if (value == null) { 
      return 
     } 
     if (typeof value == 'object') { 
      getKeyValueJson(value, html); 
     } 
     else { 
      html += '<label>' + key + '</label> :- <label>' + value + '</label><br>'; 
     } 
    }); 
    return html; 
} 

我想以这种方式来打印:

.... 
AccountNo :- 1234567890 
EmailAddress :- dfgsdfgsdfg 
MobileNumber :- 65-4576573 
.... 
Token :- 3C639AE65 

回答

2

问题是在你的JSON和在你的代码,你刚刚给它字符串

"{\"EmailAddress\":\"dfgsdfgsdfg\",\"MobileNumber\":\"65-4576573\",\"ID\":\"4572-4756876-8\"}" 

将其更改为

{"EmailAddress":"dfgsdfgsdfg","MobileNumber":"65-4576573","ID":"4572-4756876-8"} 

var html = ''; 
 
var contextObj = { 
 
    "CategoryID": "1", 
 
    "BillerID": "23", 
 
    "BillerName": "MERCS", 
 
    "RequestType": "QuickPay", 
 
    "AccountNo": "1234567890", 
 
    "Authenticator": "{\"EmailAddress\":\"dfgsdfgsdfg\",\"MobileNumber\":\"65-4576573\",\"ID\":\"4572-4756876-8\"}", 
 
    "Token": "3C639AE65" 
 
}; 
 

 
html = getKeyValueJson(contextObj, html); 
 
$('div').html(html); 
 

 
function getKeyValueJson(obj, html) { 
 
    $.each(obj, function(key, value) { 
 
    
 
    value = parseIt(value) || value; 
 
    
 
    if (value == null) { 
 
     return 
 
    } 
 
    console.log(typeof value); 
 
    if (typeof value == 'object') { 
 
     html += getKeyValueJson(value, html); 
 
    } else { 
 
     html += '<label>' + key + '</label> :- <label>' + value + '</label><br>'; 
 
    } 
 
    }); 
 
    return html; 
 
} 
 

 
function parseIt(str) { 
 
    try { return JSON.parse(str); } catch(e) { return false; } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div> 
 
</div>

+0

你可以解决这个问题,而不改变'json'对象? – Shaggy 2014-10-09 06:00:44

+1

你可以使用像'JSON.parse()' – 2014-10-09 06:01:31

+0

这样的东西,如果你在小提琴中展示它会很棒 – Shaggy 2014-10-09 06:04:01