#marklogic
#marklogic
Вопрос:
Я хотел бы удалить все пустые (например, «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);
Комментарии:
1. Я пробовал, и это работает, что не так? каково значение doc?
2. URI — это uri фактического документа, например /testdata/aaa.json, который состоит из заголовков общего шаблона конверта.
3. это будет так же, как это let doc = {«a»:»»,»b»:»1″};?
4. На самом деле вот так, {«envelope»:{«headers»:[], «triples»:[], «instance»:{«A»:»22″, «B»:»»»}}; Я хотел бы очистить все свойства B из этого JSON.
5. о, вот почему. Я понял
Ответ №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;
}