JSON隐藏“;空”;数据

JSON hide "null" data

本文关键字:数据 JSON 隐藏      更新时间:2023-09-26

我有一个JSON文件,并且显示在引导程序表中。

这是我用来显示的代码:

$(document).ready(function(){
    $.getJSON(url, function(data){
        content = '<h1><p class="p1"><span class="s1">' + 
                  data.test.name + '</span></p></h1><table class="table table-bordered"><tbody><tr><td>Section:</td><td>' + 
                  data.test.section + '</td></tr><tr><td>Synonyms:</td><td>' + 
                  data.test.synonyms + '</td></tr><tr><td>Container:</td><td>' + 
                  data.test.container + '</td></tr><tr><td>Reference Ranges:</td><td>' + 
                  data.test.reference + '</td></tr><tr><td>Availability:</td><td>' + 
                  data.test.availability + '</td></tr><tr><td>Special Handling:</td><td>' + 
                  data.test.specialHandling + '</td></tr><tr><td>Additional Comments:</td><td>' + 
                  data.test.additionalComments + '</td></tr></tbody></table>';
            $(content).appendTo("#main");
            $("#main").fadeIn( );
    });
}); 

我想隐藏任何=为"null"的值,这让我很难过。

如果您只想要空值,并且没有返回任何可能的伪值,这将适用于空值和缺失值:

适应小提琴演奏

工作Fiddle

var data = {
    test: {
        name: "bob",
        section: null,
        synonyms: "this, that",
        container: "box",
        reference: null,
        availability: null,
        specialHandling: "be careful",
        additionalComments: "No comment"
    }
};
var content = '<h1><p class="p1"><span class="s1">' + 
          (data.test.name || '') + '</span></p></h1><table class="table table-bordered"><tbody><tr><td>Section:</td><td>' + 
          (data.test.section || '') + '</td></tr><tr><td>Synonyms:</td><td>' + 
          (data.test.synonyms || '') + '</td></tr><tr><td>Container:</td><td>' + 
          (data.test.container || '') + '</td></tr><tr><td>Reference Ranges:</td><td>' + 
          (data.test.reference || '') + '</td></tr><tr><td>Availability:</td><td>' + 
          (data.test.availability || '') + '</td></tr><tr><td>Special Handling:</td><td>' + 
          (data.test.specialHandling || '') + '</td></tr><tr><td>Additional Comments:</td><td>' + 
          (data.test.additionalComments || '') + '</td></tr></tbody></table>';
    $(content).appendTo("#main");
    $("#main").fadeIn( );

版本2

此版本使用scrub函数来删除其他值,如"()"。如果添加更多的条件,那么重新审视擦除逻辑可能是个好主意。。。

工作小提琴

// Sample dataset
var data = {
    test: { 
        "name": "RNA Polymerase III Antibody", 
        "id": 96800, 
        "container": null, 
        "reference": null,
        "section": null, 
        "synonyms": "()", 
        "availability": null, 
        "specialHandling": null, 
        "additionalComments": null 
    }
};
// Extra assignment kept for clarity
function scrub(inStr) {
    inStr = inStr || '';  // Set to self if it is a truthy value
    inStr = "()" === inStr ? '' : inStr;
    return inStr;
}
var content = '<h1><p class="p1"><span class="s1">' + 
          scrub(data.test.name) + '</span></p></h1><table class="table table-bordered"><tbody><tr><td>Section:</td><td>' + 
          scrub(data.test.section) + '</td></tr><tr><td>Synonyms:</td><td>' + 
          scrub(data.test.synonyms) + '</td></tr><tr><td>Container:</td><td>' + 
          scrub(data.test.container) + '</td></tr><tr><td>Reference Ranges:</td><td>' + 
          scrub(data.test.reference) + '</td></tr><tr><td>Availability:</td><td>' + 
          scrub(data.test.availability) + '</td></tr><tr><td>Special Handling:</td><td>' + 
          scrub(data.test.specialHandling) + '</td></tr><tr><td>Additional Comments:</td><td>' + 
          scrub(data.test.additionalComments) + '</td></tr></tbody></table>';
    $(content).appendTo("#main");
    $("#main").fadeIn( );

正如前面提到的注释,您没有说明希望如何输出值以下是应该让你开始的东西:

假设我们已将此数据返回

var data = {};
data.test = {
    section: "mySection",
    synonyms: "mySyn",
    container: "myContainer",
    reference: undefined,
    availability: "myAvail",
    specialHandling : undefined,
    additionalComments: "myComment"
}

你有一个与你的数据密钥相同的对象。测试

var labels = {};
labels.test = {
    section: "Section",
    synonyms: "Synonyms",
    container: "Container",
    reference: "Reference Ranges",
    availability: "Availability",
    specialHandling: "Special Handling" ,
    additionalComments: "Additional Comments"
}

以下功能可以写入数据

function writeTablerow(labels, data){   
    for (var key in data) {
       if (data.hasOwnProperty(key) && data[key] !== undefined) {
          console.log(labels[key], data[key]);
       }
    }
};

你可以这样称呼它:

writeTablerow(labels.test, data.test);