Разбор через вложенный массив JSON Object nodejs

1

Я пытаюсь разобрать объект JSON и удалить в нем ключ "id", я смог удалить "id", который появляется в корне объекта, но не может пересечься с вложенными объектами массива, который также имеет " id 'и удалить их, Теперь следует блок кода

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"
    }
  } ]
} ]

}

Я могу удалить свойство id в объекте массива, обратившись к нему через индекс, но это не будет обрабатывать динамические сценарии, когда ключи с JSON растут. Любое предложение было бы ценным

  • 0
    Какова цель удаления идентификаторов?
  • 0
    Я пытаюсь создать новый JSON из вышеперечисленного и использовать его для почтовой операции в другом месте.
Теги:
object
arrays

1 ответ

1
Лучший ответ

Вы можете сделать это рекурсивно: каждый раз, когда вы обнаруживаете массив внутри объекта, вы выполняете его, чтобы удалить идентификатор в каждом элементе.

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);
            });
        } 	
    });
}
removeId(json);
console.log(json);
  • 0
    Работает как шарм, но я хотел бы узнать больше, если у вас есть время, что именно происходит в этом блоке кода if (Array.isArray (obj [key])) {obj [key] .forEach (o => {removeId (o);}); }
  • 0
    «delete obj.id» удаляет идентификатор свойства объекта obj. Object.keys (obj) возвращает массив, содержащий имена всех ключей obj. цикл forEach через весь ключ, затем Array.isArray проверяет, является ли соответствующее значение массивом. Если это массив, переберите его (obj [key] .forEach ()), чтобы удалить идентификатор свойства в каждом элементе, вызвав одну и ту же функцию removeId и т. Д.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню