Я получаю следующую ошибку:
Исключение в потоке "AWT-EventQueue-0" java.lang.ClassCastException: класс org.json.simple.JSONArray не может быть приведен к классу org.json.simple.JSONObject (org.json.simple.JSONArray и org.json.simple.JSONObject находятся в безымянном модуле загрузчика 'app')
Конечная точка, в которой я получаю JSON:
https://www.okex.com/api/spot/v3/instruments
Я искал об ошибке, я думаю, проблема в том, что я получаю JSONArray вместо JSONObject, но мне нужно фильтровать по ключу, так как мне нужно получить каждый "base_currency"из JSON, поэтому мне нужно JSONObject для фильтрации через этот ключ, потому что не могу сделать это с JSONArray, потому что он имеет только фильтр по индексу.Но я не знаю, как это сделать
Ниже приведен исходный код, который дает мне ошибку:
private String UrlBase = "https://www.okex.com/";
private URL url;
private String inline="";
private JSONObject jobj;
private JSONObject jobj1;
private Scanner sc;
private String Symbols = "api/spot/v3/instruments";
private String Param1= "base_currency";
private JSONArray arr;
private JSONArray arr1;
private JSONParser prs;
private HttpURLConnection conn;
private ArrayList Monedas = new ArrayList();
private Conexion conc = new Conexion();
public void CargarMonedasNuevasOkex() throws IOException {
try {
url = new URL(UrlBase+Symbols);
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
conn = (HttpURLConnection)url.openConnection();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
conn.setRequestMethod("GET");
conn.connect();
int responsecode = conn.getResponseCode();
if(responsecode != 200) {
throw new RuntimeException("HttpResponseCode: " +responsecode);
}
else{
sc = new Scanner(url.openStream());
while(sc.hasNext())
{
inline+= sc.nextLine();
}
sc.close();
JSONParser parse = new JSONParser();
try {
jobj1 = (JSONObject) parse.parse(inline);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
arr1 = (JSONArray) jobj1.get(Param1);
System.out.println(arr.get(0));
for( int a=0; a<arr1.size(); a++ ) {
jobj1 = (JSONObject) arr1.get(a);
}
}
}
Только что отредактированный с правильным кодом,другой был в порядке.извините