我正在尝试解析此JSONObject
{
"query": {
"yahoo:count": 1,
"results": {
"rate": {
"Name": "USD/INR",
"id": "USDINR",
"Time": "12:19pm",
"Date": "10/31/2015",
"Bid": 65.405,
"Ask": 65.43,
"Rate": 65.405
}
},
"yahoo:created": "2015-11-01T02:16:56Z",
"yahoo:lang": "en-US",
"xmlns:yahoo": "http://www.yahooapis.com/v1/base.rng"
}
}
这是我的程序
import java.text.ParseException;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Test {
public static void main(String[] args) throws ParseException, JSONException {
String json = "{\"query\":{\"yahoo:count\":1,\"results\":{\"rate\":{\"Name\":\"USD/INR\",\"id\":\"USDINR\",\"Time\":\"12:19pm\",\"Date\":\"10/31/2015\",\"Bid\":65.405,\"Ask\":65.43,\"Rate\":65.405}},\"yahoo:created\":\"2015-11-01T02:16:56Z\",\"yahoo:lang\":\"en-US\",\"xmlns:yahoo\":\"http://www.yahooapis.com/v1/base.rng\"}}";
JSONObject json_obj = new JSONObject(json);
String Rate = json_obj.getJSONObject("query").getJSONObject("results")
.getJSONObject("rate").getString("Rate");
System.out.println(Rate);
}
}
Exception in thread "main" org.json.JSONException: JSONObject["Rate"] not a string.
at org.json.JSONObject.getString(JSONObject.java:644)
at Test.main(Test.java:16)
你能告诉我如何解决这个问题吗?
答案 0 :(得分:1)
它对类型的严格,getString("Rate")
不是一个字符串,而是一个数字。要获取数字值,请使用getDouble("rate")
。您还可以使用get("rate")
的类型安全获取,该类型应返回Double
,然后在其上调用toString()
。
答案 1 :(得分:1)
试试这个
.getDouble("Rate")
而不是
.getString("Rate")
费率是双倍而不是字符串
答案 2 :(得分:0)
堆栈跟踪显然不明显吗? Rate不是字符串,而是整数。您应该使用getInt
或getNumber
或Java中调用的任何内容,而不是getString
。