【问题标题】:Remove empty properties from JSON从 JSON 中删除空属性
【发布时间】:2019-03-11 08:35:18
【问题描述】:

我想删除每个空的(例如“a”=“”)JSON 属性 从信封内的实例部分。 我编写了如下代码,但它不起作用。 谁能告诉我如何完成这项工作?

let doc = fn.doc(URI);

function cleanProp(doc) {
  for (var propName in doc) { 
    if (doc[propName] === null || doc[propName] === undefined || doc[propName] === "") {
      delete doc[propName];
    }
  }
}

cleanProp(doc);

【问题讨论】:

  • 我试过了,它的工作有什么问题? doc的价值是什么?
  • URI 是实际文档的 uri,例如 /testdata/aaa.json 由通用信封模式标题组成。
  • 和这个一样 let doc = {"a":"","b":"1"};?
  • 其实是这样的,{"envelope":{"headers":[], "triples":[], "instance":{"A":"22", "B":" "} };我想从这个 JSON 中清除整个 B 属性。
  • 哦,这就是为什么。我明白了

标签: marklogic


【解决方案1】:

试试这个。希望对你有帮助

注意:如果您正在寻找动态循环,它仅适用于给定变量,您可以递归循环。

let doc =  {"envelope":{"headers":[], "triples":[], "instance":{"A":"22", "B":""} }};

function cleanProp(doc) {
  for (var propName in doc) { 
  	for(var d in doc[propName]){
    		if (!isEmpty(doc[propName][d]) || doc[propName][d].length != 0) {

         for (var f in doc[propName][d]){
         			if (doc[propName][d][f] === null || doc[propName][d][f] === undefined || doc[propName][d][f] === "") {
              delete doc[propName][d][f];
              }
         }
      }
    }
  }
}

cleanProp(doc);

console.log(doc);

function isEmpty(obj) {
    for(var key in obj) {
        if(obj.hasOwnProperty(key))
            return false;
    }
    return true;
}

【讨论】:

    猜你喜欢
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 2014-06-22
    • 2023-04-07
    • 2015-07-15
    • 1970-01-01
    相关资源
    最近更新 更多