从 JSON 格式解析数据时遇到问题
trouble with parse data from JSON format
我有一个 JSON 格式的数据。例如:
{
"status": "ok",
"meta": {
"count": 1
},
"data": {
"531446": {
"global_rating": 6595,
"statistics": {
"random": {
"spotted": 14379,
"xp": 9087316,
"draws": 238,
"battles": 15034,
"wins": 7614,
"avg_damage_assisted_track": 42.94
}
}
}
}
}
为了解析,我写了下一段代码。但是没用。
JsonReader jsonReader = Json.createReader(new FileInputStream("F:\Test.json"));
JsonObject jsonObject = jsonReader.readObject();
jsonReader.close();
int acc_id = 531446;
JsonObject dataJson = jsonObject.getJsonObject("data");
System.out.println("data:" + dataJson);
JsonObject accountIdJson = dataJson.getJsonObject(String.valueOf(acc_id));
System.out.println(" accountIdJson:"+accountIdJson);
String globalRatingJson = accountIdJson.getString("global_rating");
我正在尝试获取 global_rating 和 battles 的值,但此代码抛出异常
Exception in thread "main" java.lang.ClassCastException:
org.glassfish.json.JsonNumberImpl$JsonIntNumber cannot be cast to
javax.json.JsonString
在最后一行,但我不明白为什么。我做错了什么?有人可以提示我吗?
谢谢。
global_rating
看起来是一个整数,不是吗?试试这个:
int global_rating = accountIdJson.getInt("global_rating");
我有一个 JSON 格式的数据。例如:
{
"status": "ok",
"meta": {
"count": 1
},
"data": {
"531446": {
"global_rating": 6595,
"statistics": {
"random": {
"spotted": 14379,
"xp": 9087316,
"draws": 238,
"battles": 15034,
"wins": 7614,
"avg_damage_assisted_track": 42.94
}
}
}
}
}
为了解析,我写了下一段代码。但是没用。
JsonReader jsonReader = Json.createReader(new FileInputStream("F:\Test.json"));
JsonObject jsonObject = jsonReader.readObject();
jsonReader.close();
int acc_id = 531446;
JsonObject dataJson = jsonObject.getJsonObject("data");
System.out.println("data:" + dataJson);
JsonObject accountIdJson = dataJson.getJsonObject(String.valueOf(acc_id));
System.out.println(" accountIdJson:"+accountIdJson);
String globalRatingJson = accountIdJson.getString("global_rating");
我正在尝试获取 global_rating 和 battles 的值,但此代码抛出异常
Exception in thread "main" java.lang.ClassCastException:
org.glassfish.json.JsonNumberImpl$JsonIntNumber cannot be cast to
javax.json.JsonString
在最后一行,但我不明白为什么。我做错了什么?有人可以提示我吗?
谢谢。
global_rating
看起来是一个整数,不是吗?试试这个:
int global_rating = accountIdJson.getInt("global_rating");