如何在Java中解析JSON对象的精确值?

如何在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

我正在使用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.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