Как добавлять элементы в подобный JSON?

Пытаюсь добавить данные в JSON такого вида:

{
  "users": {
    "admins": [{
      "Alex": {
        "login": "alex123",
        "password": "1234"
      },
      "Sam": {
        "login": "sami",
        "password": "4321"
      }
    }],
    "guest": [{
      "Lisa": {
        "login": "lsss",
        "password": "qwerty"
      },
      "John": {
        "login": "joaa",
        "password": "asd321"
      }
    }]
  }
}

Задача такова, что помимо пользователя нужно добавлять и категорию юзера если она отсутствует (admins, users и тд.). Пытался сделать вот так:

let data = JSON.parse(file)
data.users[0][category] = []

Но ничего путного из этого не вышло. А если категория имеется то я просто заношу новую запись методом push()

В общем много чего перепробовал, выходит либо полностью удалить данные в категории и оставить только новые, либо все сделать как надо, но в таком случае категории нужно писать в файл заранее. Подскажите как решить такую задачку?


Ответы (1 шт):

Автор решения: teran

users это объект, категории - его ключи. Вы почему-то пытаетесь обратиться к users[0].

все что требуется - прежде чем добавлять юзера - проверить есть ли ключ-категория у объекта. Если нет, то создаете ее и инициализируете пустым массивом.

 if(!data.hasOwnProperty(category)){ 
     data[category] = []; 
 }

Дальше продложаете работу как обычно - добавляете юзера с помощью push

→ Ссылка