java - Jayway jsonpath 在正则表达式中以 "/"开头

标签 java jsonpath jayway

在使用包含 xpath 的正则表达式时,我遇到了 jayway jsonpath 的问题。这是我的 json:

{
  "status": "success",
  "resources": [
    {
      "id": "Attachment-20796b26-7a16-4a3d-b53c-b30d9f3cb798.TXT",
      "name": "1996032897__test1.CREDITPRINTFILE",
      "mimeType": "text/plain",
      "url": "https://test.com"
    }
  ]
}

这是我的表达: 资源[?(/__test1.CREDITPRINTFILE/.test(@.name))]

我收到以下错误:

Exception in thread "main" com.jayway.jsonpath.InvalidPathException: Expected path node
    at com.jayway.jsonpath.internal.filter.ValueNode.asPathNode(ValueNode.java:53)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readExpression(FilterCompiler.java:204)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readLogicalANDOperand(FilterCompiler.java:189)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readLogicalAND(FilterCompiler.java:151)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readLogicalOR(FilterCompiler.java:131)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readLogicalANDOperand(FilterCompiler.java:184)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readLogicalAND(FilterCompiler.java:151)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.readLogicalOR(FilterCompiler.java:131)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.compile(FilterCompiler.java:77)
    at com.jayway.jsonpath.internal.filter.FilterCompiler.compile(FilterCompiler.java:53)
    at com.jayway.jsonpath.internal.path.PathCompiler.readFilterToken(PathCompiler.java:461)
    at com.jayway.jsonpath.internal.path.PathCompiler.readNextToken(PathCompiler.java:141)
    at com.jayway.jsonpath.internal.path.PathCompiler.readPropertyOrFunctionToken(PathCompiler.java:237)
    at com.jayway.jsonpath.internal.path.PathCompiler.readNextToken(PathCompiler.java:151)
    at com.jayway.jsonpath.internal.path.PathCompiler.readDotToken(PathCompiler.java:171)
    at com.jayway.jsonpath.internal.path.PathCompiler.readNextToken(PathCompiler.java:145)
    at com.jayway.jsonpath.internal.path.PathCompiler.readContextToken(PathCompiler.java:124)
    at com.jayway.jsonpath.internal.path.PathCompiler.compile(PathCompiler.java:58)
    at com.jayway.jsonpath.internal.path.PathCompiler.compile(PathCompiler.java:75)
    at com.jayway.jsonpath.JsonPath.<init>(JsonPath.java:101)
    at com.jayway.jsonpath.JsonPath.compile(JsonPath.java:467)
    at com.jayway.jsonpath.internal.JsonContext.read(JsonContext.java:87)
    at daniel.TestJsonPath.main(TestJsonPath.java:72)

我也尝试在在线评估工具中使用相同的表达式:https://jsonpath.herokuapp.com/

Jayway - 给出相同的错误 - 预期路径节点 加特林、Nebhale - 错误 Goessner - 给了我有效的结果

我认为我正在使用最新版本的 jayway -

<dependency>
  <groupId>com.jayway.jsonpath</groupId>
  <artifactId>json-path</artifactId>
  <version>2.4.0</version>
</dependency>

问题:如果jayway不能解决这些表达式,是否有其他java库可以用来解决这些问题?

最佳答案

假设您正在查找“名称包含 __test1.CREDITPRINTFILE 的资源”,则 jsonpath 表达式 resources[?(@.name =~/.*__test1\.CREDITPRINTFILE/) ] 将与 Jayway 合作。测试于 https://jsonpath.herokuapp.com/

关于java - Jayway jsonpath 在正则表达式中以 "/"开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57777096/

相关文章:

java - 如何使用 Jayway JsonPath 等 Java 库添加新的 json 节点

Java - 使用 jsonPath 根据当前值更新 Json

java - 未捕获( promise )TypeError : Cannot convert undefined or null to object

MongoDB 上的 JSONPath 查询?

java - 使用 Eureka 注册 Web 服务

arrays - 如何使用 JSON 路径从 JSON 数组中将不存在的 props 提取为 null 或空字符串

json - 如何使用 JSONPath 获取 JSON 数组的长度?

java - 有什么理由启动没有 "$"美元符号的 JsonPath 吗?

java - 使用 GridBagLayout 需要帮助

java - 在 Java 中将 addAll 与同步列表一起使用