23

私はjsonpathnodejsを使用しています。私はこのjson構造を持っています:

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

thingsオブジェクトのキー名を持つ配列を返す jsonpath 式を知りたいです。それは次のようになります。

["books","movies"]

今のところ、私はこれをやっています:

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

しかし、私はそれがエレガントだとは思いません...キー名だけが必要な場合、構造全体のコピーを取得する必要はありません。

4

4 に答える 4

2

あなた自身よりも良い解決策があるとは思いません:

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

ここでの主な誤解は、構造全体をコピーしているわけではないため、このスニペットの「構造全体のコピーを取得する」ことを心配する必要がないということだと思います。オブジェクト全体が既にメモリにロードされています。jsonpath は新しいコピーを作成せず、既存のオブジェクトへの参照を返すだけです。

jsonpath.eval(jsonStructure,"$.things").pop() === jsonStructure.things //true
于 2014-05-19T23:44:02.173 に答える