Подтвердить что ты не робот

Как перечислить имена ключей объектов с помощью jsonpath?

Я использую nodejs с jsonpath. У меня есть эта структура json:

{
  things:{
    books: [
      {name: "book1"},
      {name: "book2"},
      {name: "book3"},
      {name: "book4"},
    ],
    movies: [
      {name: "movie1"},
      {name: "movie2"},
      {name: "movie3"},
      {name: "movie4"},
    ]
  }
}

Я хотел бы знать выражение jsonpath, которое возвращает массив с именами ключей объекта things. Это будет:

["books","movies"]

В настоящее время я делаю это:

Object.keys(jsonpath.eval(jsonStructure,"$.things").pop());

Но я не считаю это элегантным... Мне не нужно будет копировать всю структуру, когда мне нужны только имена ключей.

4b9b3361

Ответ 1

Я не верю, что есть лучшее решение, чем ваше:

Object.keys(jsonpath.eval(jsonStructure,"$.things").pop());

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

jsonpath.eval(jsonStructure,"$.things").pop() === jsonStructure.things //true