如何用jsonpath列出对象键名?

我正在使用jsonpath的nodejs 。 我有这个JSON结构:

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

我想知道jsonpathexpression式返回一个数组与things对象的键名称。 那将是:

 ["books","movies"] 

现在,我正在这样做:

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

但我不觉得它优雅…我不应该需要得到整个结构的副本,当我只需要关键的名字。

我不相信有比自己更好的解决scheme:

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

我认为这里主要的误解是,你不必担心这个片段“获得整个结构的副本”,因为你没有复制整个结构。 你已经把整个对象加载到内存中,jsonpath不会创build一个新的副本,它只是返回一个对已经存在的对象的引用,即:

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