簡體   English   中英

使用空JSON對象處理

[英]Handle with null JSON object

我是JSON和jQuery的新手。 我正在做的是從api獲取JSON對象並將其顯示為表格。 但是JSON數組中的某些元素為null

例如; JSON數組如下所示:

[
  {"key":"first" , "name" :{"last":"Owen"} , "age" :{"number": 18} },
  {"key":"second" , "name" : null , "age" :{"number": 20}  } ,
  {"key":"third" , "name" : {"last":"Jay"} , "age" :null }
]

所以要輸入到表中,我這樣做:

$.each(jsonarray, function(i,data){
 $("<tr>").append(
   $.('<td>').text(data.key),
   $.('<td>').text(data.name.last),
   $.('<td>').text(data.age.number)).appendTo('.table');
});

所以問題是他們會得到錯誤:

無法讀取null的屬性“ last”; 無法讀取null的屬性“ number”

因為在第二個和第三個元素中,名稱為null,年齡為null。 因此,沒有要添加的名稱name.lastage.number這樣的東西。

我想要的是每當他們得到類似的東西時,他們會自動返回“無信息”以添加到表中

但是,我仍然不知道該怎么做。 我確實嘗試編寫了一個要檢查的功能。 例如這樣:

    function check1(datum){
    if (datum !== null && datum !== undefined){
        return datum.last;
    }
    else {
        return "No Information"
    }
}
    function check2(datum){
    if (datum !== null && datum !== undefined){
        return datum.number;
    }
    else {
        return "No Information"
    }
}

但這非常繁瑣,因為我需要編寫2個單獨的函數進行檢查(名稱為1,年齡為1)。 我只是想知道有沒有一種優雅的方法可以為所有人完成一項功能?

能滿足您的需求嗎?

var noDataTip = 'No Information';
$.each(jsonarray, function(i,data) {
    $("<tr>").append(
    $('<td>').text(data.key),
    $('<td>').text( (data.name && data.name.last) || noDataTip),
    $('<td>').text( (data.age && data.age.number)) || noDataTip).appendTo('.table');
});

嘗試這個。 :)

$.each(jsonarray, function(i,data){
    if(data.key === undefined || data.key === null){
        data.key = 'none';
    }
    if(data.name === undefined || data.name === null){
        data.name = 'none';
    }
    if(data.age === undefined || data.age === null){
        data.age = 'none';
    }
    $("<tr>").append(
        $.('<td>').text(data.key),
        $.('<td>').text(data.name.last),
        $.('<td>').text(data.age.number)
    ).appendTo('.table');
});
    $.each(jsonarray, function(i,data){
        $("<tr>").append(
        $.('<td>').text(data.key),
        $.('<td>').text( data.name && data.name.last ? data.name.last : "No Information"),
        $.('<td>').text( data.age && data.age.number ?
 data.age.number : "No Information").appendTo('.table');
    });

我將編寫一個對null進行簡單檢查的函數:

function checkForNull(item) {
var data = "No information";
  if(!item === null) {
     data = item;
   }    
   return data;    
}

然后,您可以按以下方式使用它:

$.('<td>').text(checkForNull(data.key))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM