【问题标题】:null / empty json how to check for it and not output?null / empty json 如何检查它而不输出?
【发布时间】:2009-02-08 02:02:58
【问题描述】:

我有一个通过 ajax 检索的 json 编码数据集。我试图检索的一些数据点将返回给我们 null 或空。

但是,我不希望将那些 null 或 empty 显示给最终用户,或传递给其他函数。

我现在正在做的是检查

如果(this.cityState!='null'){ // 在这里做一些事情 }

但是,对于每一行,我发现自己要经历多个 if 语句,而且似乎效率很低。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: javascript json


    【解决方案1】:

    由于 JSON 只是一种数据格式,因此除非您明确检查它们,否则无法知道您的哪些数据成员将为空。您始终可以重构您的代码,使其更紧凑、更易于阅读,但如果您事先不知道哪些为空、哪些将包含数据,则必须明确检查每个项目。

    虽然我不知道您的代码应该做什么,但这里有一个示例,说明您可以如何重构它以使其更紧凑:

    var data = { Name: "John Doe", Age: 25, Address: null, CityState: "Denver, CO" };
    for (member in data) {
        if (data[member] != null)
            // Do work here
    }
    

    【讨论】:

    • 您没有使用 hasOwnProperty 来检查属性是否属于对象或通过原型链添加,因此我不赞成您...
    【解决方案2】:

    我不完全确定你想要做什么......你说你不想将它们传递给其他函数,所以我假设你想删除它们:

    var data = {a:"!",b:"null", c:null, d:0, e:"", hasOwnProperty:"test"};
    
    var y;
    for (var x in data) {
        if ( Object.prototype.hasOwnProperty.call(data,x)) {
            y = data[x];
            if (y==="null" || y===null || y==="" || typeof y === "undefined") {
                delete data[x];
            }
    
        }
    }
    

    检查 hasOwnProperty 是为了确保它不是属性链中的某个属性。

    【讨论】:

      【解决方案3】:

      或者你可以直接使用

      int data=0;
      try{
         data=json.getInt("Data");
      }catch(Exception e){
         data=anydefaultdata;
      }
      

      【讨论】:

        猜你喜欢
        • 2013-03-26
        • 2023-01-28
        • 1970-01-01
        • 2010-12-14
        • 2021-04-19
        • 2019-03-20
        • 2016-02-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多