gpt4 book ai didi

java - 尝试将 JSONArray 转换为 JSONObject

转载 作者:行者123 更新时间:2023-12-02 10:05:15 25 4
gpt4 key购买 nike

我收到下一个错误:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: class org.json.simple.JSONArray cannot be cast to class org.json.simple.JSONObject (org.json.simple.JSONArray and org.json.simple.JSONObject are in unnamed module of loader 'app')

我获取 JSON 的端点是:

https://www.okex.com/api/spot/v3/instruments

我已经搜索了该错误,我认为问题是我得到的是 JSONArray 而不是 JSONObject,但我需要按键过滤,因为我需要从 json 获取每个“base_currency”,所以我需要 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);
}
}

}

刚刚使用正确的代码进行了编辑,其他的都很好。抱歉

最佳答案

尝试使用 gson 库(com.google.gson 包)来实现此目的。使用以下语法

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.create().fromJson(yourJosnArray, yourObject.class)

如果您有任何必须使用的日期属性

gsonBuilder.registerTypeAdapter(Date.class, new DateDeserializer());

public class DateDeserializer implements JsonDeserializer<Date> {

@Override
public Date deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {
String date = element.getAsString();
return TimeService.parseDate(date,"yyyy-MM-dd'T'HH:mm:ss");

}
}

关于java - 尝试将 JSONArray 转换为 JSONObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55375664/

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