You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium医院应用新增设施验证时出现ClassCastException问题求助

解决JSON类型转换异常:JSONArray无法转为JSONObject

嘿,我来帮你搞定这个ClassCastException的问题!这个异常的核心原因很明确:你解析的JSON文件根节点是一个JSON数组(JSONArray),但你在代码里强行把它转换成了JSON对象(JSONObject),这就导致了类型不匹配的错误。

问题分析

你用org.json.simple.JSONParser解析JSON文件后,得到的obj实际上是JSONArray类型,但代码里却写了:

JSONObject jsonObject = (JSONObject) obj;

这就触发了java.lang.ClassCastException,因为JSONArray和JSONObject是两个完全不同的类型,不能直接强制转换。

解决方案

首先你需要确认你的AddNewFacilityDetailsSection.json文件的结构,它应该是类似这样的数组格式(根节点是[]):

[
  {
    "Selenium-Facility": "测试设施名称",
    "Test Facility created by Selenium": "这是Selenium创建的测试设施描述"
  }
]

接下来修改你的验证方法,先把解析结果转成JSONArray,再从中取出对应的JSONObject:

public void verifyNewFacility2() throws FileNotFoundException, IOException, ParseException { 
    String Name, Description; 
    JSONParser parser = new JSONParser(); 
    Object obj = parser.parse(new FileReader("C:\\selenium-protect\\src\\test\\resources\\scripts\\Facility\\AddNewFacilityDetailsSection.json")); 
    
    // 第一步:把解析结果转为JSONArray
    JSONArray jsonArray = (JSONArray) obj;
    // 第二步:从数组中获取第一个JSONObject(如果数组里只有一条数据)
    JSONObject jsonObject = (JSONObject) jsonArray.get(0); 
    
    // 注意:确保JSON文件里的键名和这里的get参数完全一致
    Name = (String) jsonObject.get("Selenium-Facility"); 
    Description = (String) jsonObject.get("Test Facility created by Selenium"); 
    
    WebElement nameElement = driver.findElement(By.xpath("//div[@class='col-12']//following::div[1]//following::h3")); 
    String message = nameElement.getText(); 
    Assert.assertEquals(message, Name); 
    
    WebElement descriptionElement = driver.findElement(By.xpath("//div[@class='col-12']//following::div[1]//following::p")); 
    String message1 = descriptionElement.getText(); 
    Assert.assertEquals(message1, Description); 
}

额外提醒

  • 如果你JSON文件的根节点本来应该是JSONObject(根节点是{}),那你需要检查JSON文件的格式是否正确,有没有多余的方括号。
  • 确保get()方法里的键名和JSON文件中的键完全一致,包括大小写、空格,否则会返回null导致后续断言失败。

内容的提问来源于stack exchange,提问作者sunil nair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:08:56