使用 JSON 从 API 中提取特定值的问题

Posted

技术标签:

【中文标题】使用 JSON 从 API 中提取特定值的问题【英文标题】:Problem extracting specific values from API using JSON 【发布时间】:2022-01-02 01:29:39 【问题描述】:

我在从 API 获取数据时遇到问题,想知道是否有人可以提供帮助。我基本上“low_14h”的值有许多不同货币的响应。我只想能够提取“usd”中的值并将其放入我的文本框“dailylowtext”中。我可以摆弄并从'low_24h'中获取一些值,但我正在努力从'usd'中获取值。希望这对我想要实现的目标有意义。

我当前的代码是:

RequestQueue 队列 = Volley.newRequestQueue(this); 字符串 url = "https://api.coingecko.com/api/v3/coins/mina-protocol";

    JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() 

        @Override
        public void onResponse(JSONObject response) 

            try 
                JSONObject jObj=new JSONObject(response.toString());
                String usd = jObj.getJSONObject("response").getJSONObject("low_24h").getString("usd").toString();



             catch (JSONException e) 
                e.printStackTrace();
            



            // TODO Auto-generated method stub
            dailylowtext.setText(response.toString());
            System.out.println("Response => "+response.toString());


        

    , new Response.ErrorListener() 

        @Override
        public void onErrorResponse(VolleyError error) 
            // TODO Auto-generated method stub

        
    );

    queue.add(jsObjRequest);

【问题讨论】:

JSON 实际上是什么样子的?举个例子 嗨。谢谢你的文章。问题已得到解决。保重。 【参考方案1】:

我想你忘记了“market_data”。在 JSON 文件中,market_data 是 low_24 的父级。

您的 JSON 数据中没有“响应”节点,请尝试使用 market_data 而不是响应。

String usd = jObj.getJSONObject("market_data").getJSONObject("low_24h").getString("usd").toString();

您还可以使用 gson 或 moshi 等库来帮助您处理 JSON 数据。

【讨论】:

当我将其更改为反映时,这立即起作用。太感谢了!我怎么会错过“market_data”!?现在觉得好傻。非常感谢您的帮助,保重并度过一个美好的圣诞节。

以上是关于使用 JSON 从 API 中提取特定值的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用python从json中搜索和提取特定数据

如何从嵌套的 json 值中提取特定值。?

Android:我想以 json 格式从 google map api 中提取地址

使用 jq 从 JSON 输出中提取特定字段

使用 XSLT 从 JSON 输出中提取特定字段

从熊猫数据框中提取在特定列中具有特定值的所有行