我想遍历每个键值json
元素并打印它。但是其中一些键也有null
个值。
因此$.each
提供错误TypeError: obj is null
我不想从对象中删除null键,也不想在html
变量中打印null对象。我想在null
函数
$.each
对象
小提琴演示 - > http://jsfiddle.net/paxg89q0/4/
代码:
var s={"CategoryID":"1","Name":"TCS","ID":"23","Type":"Pay","AccountNo":"1234567890","Authenticator":"{\"EmailAddress\":\"dfgsdfgsdfg\",\"MobileNumber\":\"98-7698769\",\"UniqueID\":\"9876-8975657-6\"}","AddBill":null,"PartnerID":null,"ShortName":null,"Token":"8FB91DE6"};
var html;
$('div').html(getKeyValueJson(s));
function getKeyValueJson(obj) {
$.each(obj, function (key, value) {
if (typeof value == 'object') {
getKeyValueJson(value);
}
else {
html += '<label>' + key + '</label><label>' + value + '</label>';
}
});
return html;
}
答案 0 :(得分:2)
typeof null
返回"object"
,因此null
值被视为对象。
由于您似乎想要完全省略空值,因此您可以在$.each
回调开始时显式测试空值:
$.each(obj, function (key, value) {
if(value === null) { return; } // skip nulls
...
答案 1 :(得分:1)
在某些情况下,如果值为null,您可能希望执行代码。使用以下语句包装可执行代码:
if(myVal == null){
}
仅当myVal为null时,此语句才提供执行代码的方法。
更改您的代码:
function getKeyValueJson(obj) {
$.each(obj, function (key, value) {
if(value)
{
if (typeof value == 'object') {
getKeyValueJson(value);
}
else {
html += '<label>' + key + '</label>' + value + '</label>';
}
}
});
return html;
}