在jquery中检查每个函数的null对象

时间:2014-10-08 13:36:24

标签: javascript jquery json

我想遍历每个键值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;
}

2 个答案:

答案 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时,此语句才提供执行代码的方法。

更改您的代码:

DEMO

 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;
}