java - Jsonpath 总是返回空列表
问题描述
我试图在 jayway JsonPath 的帮助下从 json 文件中获取值。但每次它返回空列表。
我正在尝试将 json 路径用作 *.singleAccomViewData
import java.util.*;
import com.jayway.jsonpath.DocumentContext;
import com.jayway.jsonpath.JsonPath;
public class JSONMapper {
public static void main(String[] args) throws Exception {
DocumentContext jsonContext = JsonPath.parse("D:\\Docs\\search.json");
List<String> accom = JsonPath.read("D:\\Docs\\search.json", "*.singleAccomViewData");
System.out.println("accom value: " + accom);
}
}
下面是我的 JSON 文件:
{
"searchResult": {
"singleAccomViewData": null,
"singleAccomSearch": false,
"durationSelection": {
"defaultDisplay": [
6,
7,
8,
9,
10
]
}
}
}
解决方案
上述方法不起作用有几个原因:
如果您正在调用,
JsonPath.read(String, String)
那么第一个字符串应该是 Json 本身,而不是 Json 文件的路径。使用
*
JsonPath 的根是无效的,它应该是$
.在您要查找的内容之上还有另一个对象:
searchResult
.
你的最终 JsonPath 应该是$.searchResult.singleAccomViewData
. 修复上述问题,它应该可以按预期工作。
推荐阅读
- c# - 在大型企业级应用程序上存储文件的最佳方式
- javascript - 我的 Apollo 服务器订阅不起作用:无法读取未定义的属性“标题”
- elasticsearch - 在 Elasticsearch 中覆盖数据的更快方法
- vba - 如何在记事本中打开最近创建的 csv 文件?
- c++ - 如何在 C++ 中使用公共静态变量
- c - 如何从 ptr 获取结构页面信息并使用 kmalloc 或 vmalloc 固定内存?
- javascript - React onLoad 回调应该设置元素的状态,但不这样做,因为 onLoad 没有被调用
- excel - 在所有当前和未来的工作表上复制相同的单元格并粘贴到工作表 1
- reactjs - 赋值但从未在 React 表单上使用
- linux - 进程和线程如何与虚拟内存相关