如何在Java中解析JSON对象的精确值?
我正在使用API返回价格。它返回以下内容:如何在Java中解析JSON对象的精确值?,java,android,json,android-studio,Java,Android,Json,Android Studio,我正在使用API返回价格。它返回以下内容: { "nzd_usd":{ "high":0.69920002, "low":0, "avg":0.34960001, "vol":85.31394798, "vol_cur":124.37162356, "last":0.69917777, "buy":0.62000500, "sell":0.699
{
"nzd_usd":{
"high":0.69920002,
"low":0,
"avg":0.34960001,
"vol":85.31394798,
"vol_cur":124.37162356,
"last":0.69917777,
"buy":0.62000500,
"sell":0.69917777,
"updated":1515692771
}
}
我可以将其设置为在文本视图中显示,但我需要的是提取一些信息,以便像上次价格一样显示。我使用了下面截图中的代码:
不幸的是,它返回:
01-11 19:46:32.178 10723-10723/com.app.rates W/System.err: org.json.JSONException: No value for last
我理解这是因为它无法访问对象,但我不确定在这一阶段该做什么。尝试类似的方法
try {
JSONObject json = new JSONObject("nzd_usd");
String last = json.getJSONObject("last").toString();
System.out.println(last);
} catch (JSONException e) {
e.printStackTrace();
}
您不能直接获取
last
JSON,您需要首先获取nzd_usd
JSONObject,然后从中检索last
String last = object.getJSONObject("nzd_usd").getString("last");
如果您使用类似于
reformation
的东西来发出API请求,那么您可以进行设置,以便json自动序列化到Java对象或从Java对象序列化(使用gson
library)…如果需要,您也可以直接使用gson
,因为最后一个是float,而不是string,并且nzd_usd的内部对象仍然是:W/System.err:org.json.JSONException:Value nzd_usd的类型java.lang.string无法转换为JSONObject