【问题标题】:How to parse an exact value from JSON object in Java?如何从 Java 中的 JSON 对象解析精确值?
【发布时间】:2018-01-11 18:01:37
【问题描述】:

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

我明白这是因为它不访问对象,但我不确定现阶段要做什么。

【问题讨论】:

  • 如果您使用retrofit 之类的东西来发出 API 请求,那么您可以进行设置,以便 json 自动序列化到 Java 对象/从 Java 对象序列化(使用 gson 库)......你如果需要也可以直接使用gson
  • 因为 last 是 float 而不是 nzd_usd 的字符串和内部对象

标签: java android json android-studio


【解决方案1】:

不能直接获取last JSON,需要先获取nzd_usd JSONObject,然后再从中取出last

String last = object.getJSONObject("nzd_usd").getString("last");

【讨论】:

    【解决方案2】:

    试试这样的。

        try {
            JSONObject json = new JSONObject("nzd_usd");
            String last = json.getJSONObject("last").toString();
            System.out.println(last);
        } catch (JSONException e) {
            e.printStackTrace();
        }
    

    【讨论】:

    • 仍然给出:W/System.err: org.json.JSONException: value nzd_usd of type java.lang.String cannot be convert to JSONObject
    猜你喜欢
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多