对于大型JSON文件,JsonPath似乎相当慢。
在我的项目中,我希望用户能够将整个查询作为字符串传递。我使用了JsonPath,因为它允许您通过$.store.book[3].price
一次性完成JsonPath.read(fileOrString, "$.store.book[3].price", new Filter[0])
这样的整个查询。有没有更快的方法来与Javascript中的JSON文件进行交互?能够将整个查询作为字符串传递是理想的,但如果必须的话,我会写一个解析器。有什么想法吗?
即使很小的优化也会有所帮助。例如,我每次查询时都会从JSON文件中读取。将整个文件复制到开头的字符串并查询字符串会不会更好?
编辑:对于那些说“这是Javascript,而不是Java”的人,嗯,它实际上是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);
}