JsonPath は、大きな JSON ファイルではかなり遅いようです。
私のプロジェクトでは、ユーザーがクエリ全体を文字列として渡せるようにしたいと考えています。JsonPath を使用すると、クエリ全体$.store.book[3].price
を一度に行うことができるためですJsonPath.read(fileOrString, "$.store.book[3].price", new Filter[0])
。Javascript で JSON ファイルを操作するより高速な方法はありますか? クエリ全体を文字列として渡すことができれば理想的ですが、必要に応じてパーサーを作成します。何か案は?
小さな最適化でも役に立ちます。たとえば、現在、クエリを実行するたびに JSON ファイルから読み取っています。最初にファイル全体を文字列にコピーし、代わりに文字列にクエリを実行するほうがよいでしょうか?
編集:「これは Java ではなく Javascript です」と言っている人には、まあ、実際には Java です。JsonPath は Javascript に似たクエリ言語ですが、私が書いているファイルは間違いなく Java です。クエリのみ Javascript で記述します。JsonPath に関する情報とコードのスニペットを次に示します: https://code.google.com/p/json-path/
List toRet;
String query = "$.store.book[3].price";
try {
// if output is a list, good
toRet = (List) JsonPath.read(filestring_, query, new Filter[0]);
} catch (ClassCastException cce) {
// if output isn't a list, put it in a list
Object outObj = null;
try {
outObj = JsonPath.read(filestring_, query, new Filter[0]);
} catch (Exception e) {
throw new DataSourceException("Invalid file!\n", e, DataSourceException.UNKNOWN);
}