java - 放心 JsonPath : Issue with getting data from json

标签 java rest-assured rest-assured-jsonpath

我需要从 json 文件中获取数据,该文件具有奇怪的结构,但我找不到解决方案。我将restAssured 与 jsonPath 一起使用 当我尝试获取像这样的特定一周的数据时

getJsonPath().getList("years.2017.weeks.find{it.isoWeekNum == '1'}")

我收到错误

Invalid JSON expression: Script1.groovy: 1: unexpected token: 2017 @ line 1, column 33.
 years.2017.weeks.find{it.isoWeekNum == '1'}

同时我可以用这个表达式获取数据

getJsonPath().getList("years.2017.weeks")

它返回给我所有星期的列表。

我发现获得我需要的东西的唯一方法就是这样

getJsonPath().getList("years[1]['2017'].weeks.find{it.isoWeekNum == '1'}")

但这不是我要找的。我需要找到一个解决方案,可以获取 2017 年的年份[1] 和 2016 年的年份[0] 的数据

 "{
  "years": [
    {
      "2016": {
        "currentIsoWeek": "49",
        "currentTourWeek": "49",
        "weeks": [
          {
            "isoWeekNum": "1",
            "tourWeekNum": "1",
            "categories": []
          },
          {
            "isoWeekNum": "2",
            "tourWeekNum": "2",
            "categories": []
          }
        ]
      }
    },
    {
      "2017": {
        "currentIsoWeek": "",
        "currentTourWeek": "",
        "weeks": [
          {
            "isoWeekNum": "1",
            "tourWeekNum": "1",
            "categories": []
          },
          {
            "isoWeekNum": "2",
            "tourWeekNum": "2",
            "categories": []
          }
        ]
      }
    }
  ]
}

最佳答案

希望以下代码正是您所寻找的:

public static void main(final String[] args) {
    JsonPath jsonPath = new JsonPath(yourJson).using(new JsonPathConfig("UTF-8"));

    System.out.println(
            jsonPath.get("years['2017'].weeks*.find {it.isoWeekNum == '1'}")
    );
}

关于java - 放心 JsonPath : Issue with getting data from json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41032250/

相关文章:

Java - JTextField 填充所有框架

api - 如何使用 Rest Assured 在 GET url 中传递查询字符串参数?

web-services - 放心预期不符

apache - org.apache.http.ConnectionClosedException : Premature end of chunk coded message body: closing chunk expected

java - 使用 Rest Assured 从 JSON API 获取唯一属性

java - 如何使用 RestAssured post 方法上传多张图片

java - HeaderElements 必须是命名空间限定的

从 MySql 数据库读取时出现 Java Preparedstatement 错误

java - 放心设置内容类型

java - Hibernate 复合键 - 添加来自 @JoinColumns 的另一个键