2017-10-27 2 views
1

Ich versuche, ein JSON-Objekt zu analysieren und löschen die Schlüssel 'ID' mit drin, konnte ich die 'ID' löschen, die im Stamm des Objekts angezeigt wird, aber nicht durchlaufen können mit in den verschachtelten Array-Objekte, die auch ‚id‘ Schlüssel hat und löschen, folgt nun den CodeblockParsen durch verschachtelte JSON-Array Objekt nodejs

var json = { 
"id" : "a28b469b-b4f2-4846-9b5f-9d866f249bbe", 
"description" : "Cost of Product", 
"periodicity" : "calendar-monthly", 
"Vanilla" : [ { 
    "id" : "22382c50-f56f-40b7-a308-203da052c5bc", 
    "price" : { 
    "amount" : 100.000, 
    "currency" : "USD" 
    }, 
    "packing" : "RECURRING", 
    "billedInAdvance" : true 
} ], 
"Chocolate" : [ { 
    "id" : "44672921-1966-456e-bde2-87ef72f31cab", 
    "price" : { 
    "amount" : 256.000000, 
    "currency" : "USD" 
    }, 
    "packing" : "Box_Usage" 
} ], 
"Peach" : [ { 
    "id" : "e3a600e2-a2ed-4872-8e6d-5d59ec5ca02d", 
    "packing" : "Box_Usage", 
    "diff" : [ { 
    "pricePerUnit" : { 
     "amount" : 25.000000, 
     "currency" : "USD" 
    }, 
    "fixedPrice" : { 
     "amount" : 36.000000, 
     "currency" : "USD" 
    } 
    } ] 
} ], 
"Strawberry" : [ { 
    "id" : "43b4a121-455a-4828-b4bf-1bacda49f9ce", 
    "packing" : "Box_Usage", 
    "diff" : [ { 
    "pricePerUnit" : { 
     "amount" : 100.000000, 
     "currency" : "USD" 
    } 
    } ] 
} ] 

}

ich bin in der Lage, die ‚id‘ Eigenschaft innerhalb eines Arrays Objekt zu löschen, indem sie den Zugriff auf es durch den Index, aber das wird nicht mit dynamischen Szenarien umgehen, wenn die Schlüssel mit in JSON wachsen. Jeder Vorschlag wäre wertvoll

+0

Was ist der Zweck IDs zu löschen? – Observer

+0

Ich versuche, ein neues Json aus dem oben genannten zu konstruieren und es für eine Nachbearbeitung an anderer Stelle zu verwenden. – thilak

Antwort

1

Sie können es rekursiv tun: Jedes Mal, wenn Sie ein Array innerhalb des Objekts finden, durchlaufen Sie es durch, um ID in jedem Element zu entfernen.

var json = { 
 
"id" : "a28b469b-b4f2-4846-9b5f-9d866f249bbe", 
 
"description" : "Cost of Product", 
 
"periodicity" : "calendar-monthly", 
 
"Vanilla" : [ { 
 
    "id" : "22382c50-f56f-40b7-a308-203da052c5bc", 
 
    "price" : { 
 
    "amount" : 100.000, 
 
    "currency" : "USD" 
 
    }, 
 
    "packing" : "RECURRING", 
 
    "billedInAdvance" : true 
 
} ], 
 
"Chocolate" : [ { 
 
    "id" : "44672921-1966-456e-bde2-87ef72f31cab", 
 
    "price" : { 
 
    "amount" : 256.000000, 
 
    "currency" : "USD" 
 
    }, 
 
    "packing" : "Box_Usage" 
 
} ], 
 
"Peach" : [ { 
 
    "id" : "e3a600e2-a2ed-4872-8e6d-5d59ec5ca02d", 
 
    "packing" : "Box_Usage", 
 
    "diff" : [ { 
 
    "pricePerUnit" : { 
 
     "amount" : 25.000000, 
 
     "currency" : "USD" 
 
    }, 
 
    "fixedPrice" : { 
 
     "amount" : 36.000000, 
 
     "currency" : "USD" 
 
    } 
 
    } ] 
 
} ], 
 
"Strawberry" : [ { 
 
    "id" : "43b4a121-455a-4828-b4bf-1bacda49f9ce", 
 
    "packing" : "Box_Usage", 
 
    "diff" : [ { 
 
    "pricePerUnit" : { 
 
     "amount" : 100.000000, 
 
     "currency" : "USD" 
 
    } 
 
    } ] 
 
} ] 
 
}; 
 
function removeId(obj) { 
 
    delete obj.id; 
 
    Object.keys(obj).forEach(key => { 
 
     if (Array.isArray(obj[key])) { 
 
      obj[key].forEach(o => { 
 
       removeId(o); 
 
      }); 
 
     } \t 
 
    }); 
 
} 
 
removeId(json); 
 
console.log(json);

+0

Funktioniert wie ein Zauber, aber ich würde gerne mehr wissen, wenn Sie die Zeit haben, was genau passiert mit in diesem Codeblock if (Array.isArray (obj [key])) { obj [Schlüssel] .forEach (o => { removeId (o); }); } – thilak

+0

"delete obj.id" löscht die Eigenschaft id von obj. Object.keys (obj) gibt ein Array zurück, das die Namen aller Schlüssel von obj enthält. ForEach Schleife durch alle Schlüssel, dann überprüft Array.isArray, ob der entsprechende Wert ein Array ist. Wenn es ein Array ist, durchlaufen Sie es (obj [key] .forEach()), um die Eigenschaften-ID in jedem Element zu entfernen, indem Sie dieselbe Funktion aufrufen. RemoveId und so weiter – Faly

+0

Perfect thanks a lot. Ich legte auch den Code in den Editor und ging rüber, vielen Dank. – thilak