gpt4 book ai didi

java - 类转换异常 [JSONArray 无法转换为 org.json.simple.JSONObject]

转载 作者:行者123 更新时间:2023-12-01 20:56:17 24 4
gpt4 key购买 nike

我有一个像这样的 json 文件

[ {
"id":"serve-coffee",
"tags":[ {
"name": "@tag1", "line": 1
}
],
"description":"Coffee should not be served\n",
"name":"Serve coffee",
"keyword":"Feature",
"line":2,
"elements":[ {
"id": "serve-coffee;buy-last-coffee", "tags":[ {
"name": "@tag2", "line": 6
}
],
"description":"",
"name":"Buy last coffee",
"keyword":"Scenario",
"line":7,
"steps":[ {
"name": "there are 1 coffees left in the machine", "keyword": "Given ", "line": 8
}
,
{
"name": "I have deposited 1$", "keyword": "And ", "line": 9
}
],
"type":"scenario"
}
],
"uri":"src\/test\/resources\/traffic-remove-locations.feature"
}

]

我正在尝试将上述 json 文件转换为 JSONObject .但是我遇到了类转换异常"java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject"

代码

public static JSONObject convertFileToJSON(String fileName) throws ParseException {

// Read from File to String
JSONParser parser = new JSONParser();
JSONObject jsonObject = null;
try {
Object object = parser.parse(new FileReader(fileName));
jsonObject = (JSONObject) object; // Getting classCast Exception here.

} catch (FileNotFoundException e) {

} catch (IOException ioe) {

}
return jsonObject;
}

but when i changed the line jsonObject = (JSONObject) object; to JSONArray jsonArray = (JSONObject)object异常消失。 但如果我转换到 JSONArray那么我怎样才能得到像id,tags这样的值和description来自JSONArray 。 请大家给点建议

最佳答案

您的 JSON 文件表示一个包含一个对象的数组。因此,如果这是一个 Java 数据结构,那么您实际上就是这样做的:

int[] arr = {5};
int i = (int)arr;

这显然不起作用,因为您无法将数组转换为单个对象。您真正想要做的是取出数组的第一个元素。要继续 Java 示例,您需要执行以下操作

int[] arr = {5};
int i = (int)arr[0];

对于 JSON 内容,您的 parser.parse() 调用返回 JSONArray,而不是 JSONObject。所以你需要做这样的事情:

public static JSONObject convertFileToJSON(String fileName) throws ParseException {
JSONParser parser = new JSONParser();
JSONObject jsonObject = null;
try {
JSONArray array = (JSONArray) parser.parse(new FileReader(fileName));
jsonObject = array.getJsonObject(0);

} catch (FileNotFoundException e) {

} catch (IOException ioe) {

}
return jsonObject;
}

关于java - 类转换异常 [JSONArray 无法转换为 org.json.simple.JSONObject],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42310468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com