Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重新启动JsonPath:从json获取数据时出现问题_Java_Rest Assured_Rest Assured Jsonpath - Fatal编程技术网

Java 重新启动JsonPath:从json获取数据时出现问题

Java 重新启动JsonPath:从json获取数据时出现问题,java,rest-assured,rest-assured-jsonpath,Java,Rest Assured,Rest Assured Jsonpath,我需要从json文件中获取一个数据,这个文件的结构很奇怪,我找不到解决方案。我正在使用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

我需要从json文件中获取一个数据,这个文件的结构很奇怪,我找不到解决方案。我正在使用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(“年.2017.周”)

这让我想起了所有的星期

我找到的唯一能得到我需要的方法就是这样

getJsonPath().getList("years.2017.weeks.find{it.isoWeekNum == '1'}")
getJsonPath().getList(“年[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'}")
    );
}

非常感谢我在这个问题上花了很长时间,终于找到了解决办法。