线程中的例外“主” java.lang.classcastException:java.util.linkedhashmap class de Class java.util.list。

发布于 2025-02-03 20:27:42 字数 961 浏览 3 评论 0原文

使用REST保证Java框架时,我会收到以下错误。

Exception in thread "main" java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class java.util.List (java.util.LinkedHashMap and java.util.List are in module java.base of loader 'bootstrap')
    at io.restassured.path.json.JsonPath.getList(JsonPath.java:375)
    at qaflightsuppliers.QaFlightDXBLONResponseDebugValidation.main(QaFlightDXBLONResponseDebugValidation.java:94)

以下是我的代码。请更正我的代码。

List<String> jsonMapStringObjectResponse = response.jsonPath().get("recommendation");
        
for (int i = 0; i <= jsonMapStringObjectResponse.size(); i++)
{
    List<String> jsonMapObjectResponse = response.jsonPath().getList("recommendation[" + i + "]");
    System.out.print("ValidatingAirlineName="+jsonMapObjectResponse.add("validatingAirlineName"));
}   

When working with REST Assured Java framework, I get the following error.

Exception in thread "main" java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class java.util.List (java.util.LinkedHashMap and java.util.List are in module java.base of loader 'bootstrap')
    at io.restassured.path.json.JsonPath.getList(JsonPath.java:375)
    at qaflightsuppliers.QaFlightDXBLONResponseDebugValidation.main(QaFlightDXBLONResponseDebugValidation.java:94)

Below is my code. Please correct my code.

List<String> jsonMapStringObjectResponse = response.jsonPath().get("recommendation");
        
for (int i = 0; i <= jsonMapStringObjectResponse.size(); i++)
{
    List<String> jsonMapObjectResponse = response.jsonPath().getList("recommendation[" + i + "]");
    System.out.print("ValidatingAirlineName="+jsonMapObjectResponse.add("validatingAirlineName"));
}   

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小巷里的女流氓 2025-02-10 20:27:42

您正在尝试将属性推荐作为list ,但实际上在JSON响应中,它是MAP

因此,您必须更改:

List<String> jsonMapObjectResponse = response.jsonPath().getList("recommendation[" + i + "]");

要从

Map<String, String> jsonMapObjectResponse = response.jsonPath().getMap("recommendation[" + i + "]");
// example below
System.out.println(jsonMapObjectResponse.get("validatingAirlineName"));

这个问题您的JSON可能看起来像这样:

[
  {
    "id": 1,
    "recommendation": {
      "validatingAirlineName": "...",
      "adultBaseFare": "...",
      "adultTaxFare": "..."
    }
  },
  {
    "id": 2,
    "recommendation": {
      "validatingAirlineName": "...",
      "adultBaseFare": "...",
      "adultTaxFare": "..."
    }
  }
]

通过此演示进行了测试和验证,这可能也是一个很好的阅读资源:

You are trying to read the attribute recommendation as a List, but in reality in the JSON response it's a Map.

So you have to change:

List<String> jsonMapObjectResponse = response.jsonPath().getList("recommendation[" + i + "]");

to

Map<String, String> jsonMapObjectResponse = response.jsonPath().getMap("recommendation[" + i + "]");
// example below
System.out.println(jsonMapObjectResponse.get("validatingAirlineName"));

Reverse engineered from this question your JSON probably looks something like this:

[
  {
    "id": 1,
    "recommendation": {
      "validatingAirlineName": "...",
      "adultBaseFare": "...",
      "adultTaxFare": "..."
    }
  },
  {
    "id": 2,
    "recommendation": {
      "validatingAirlineName": "...",
      "adultBaseFare": "...",
      "adultTaxFare": "..."
    }
  }
]

Tested and verified with this demo, which might be a good reading resource as well:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文