Как перечислить имена ключей объектов с помощью 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());
Но я не считаю это элегантным... Мне не нужно будет копировать всю структуру, когда мне нужны только имена ключей.
Ответы
Ответ 1
Я не верю, что есть лучшее решение, чем ваше:
Object.keys(jsonpath.eval(jsonStructure,"$.things").pop());
Я думаю, что основное заблуждение здесь состоит в том, что вам не нужно беспокоиться об этом фрагменте "получение копии всей структуры", потому что вы не копируете всю структуру. У вас уже есть весь объект, загруженный в память, jsonpath не создает новую копию, он просто возвращает ссылку на уже существующий объект, т.е.:
jsonpath.eval(jsonStructure,"$.things").pop() === jsonStructure.things //true