2

奇妙な構造を持つjsonファイルからデータを取得する必要があり、その解決策が見つかりません。私はjsonPathでrestAssuredを使用しており、このような特定の週のデータを取得しようとしているとき

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": []
          }
        ]
      }
    }
  ]
}
4

1 に答える 1

3

次のコードがまさにあなたが探しているものであることを願っています:

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'}")
    );
}
于 2016-12-08T08:22:39.593 に答える