【问题标题】:JsonPath how to add multiple elements and compare one of elementsJsonPath如何添加多个元素并比较元素之一
【发布时间】:2021-06-23 06:34:16
【问题描述】:
{
    "data": {
        "a": 20,
        "b": 30,
        "c": 40
    }
}

我的查询表达式:$.data[?(@.a < (@.b + @.c))]

我希望它会返回以下结果:{"a": 20}

但是这样会出现如下错误:

Failed to parse filter: [?(@.a < (@.b + @.c))], error on position: 9, char: (

正确的表达方式是什么?

【问题讨论】:

  • 发生了什么错误?
  • net.minidev.json.parser.ParseException: 位置 60 处的意外字符 (,)。
  • 这是一个错字。它应该是 "c": 40,而不是 "c​​",40
  • 我更正了这个问题,谢谢

标签: json jsonpath


【解决方案1】:

将您的 json 字符串更正为 "c":40

您可以使用 ObjectMapper 将 json 字符串转换为 JavaObject, 代表您的 json 字符串的 Java 对象

public class Data{
    public int a;
    public int b;
    public int c;
}

public class Root{
    public Data data;
}

然后您可以访问以下数据,其中将myJsonString 映射到 java 对象,root 具有所有数据

// import com.fasterxml.jackson.databind.ObjectMapper; // version 2.11.1
// import com.fasterxml.jackson.annotation.JsonProperty; // version 2.11.1
ObjectMapper om = new ObjectMapper();
Root root = om.readValue(myJsonString), Root.class); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    相关资源
    最近更新 更多