从JSON对象获取字符串值失败如果Identifier有空格android

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从JSON对象获取字符串值失败如果Identifier有空格android相关的知识,希望对你有一定的参考价值。

亲爱。

我能够从Alpha Vantage中检索JSON对象以在我的货币转换器应用程序中使用,但我无法查找我想要的字符串值(即“5. Exchange Rate”:“17.86300000”),因为标识符的空格为下面:

{“实时货币汇率”:{“1. From_Currency代码”:“USD”,“2。From_Currency名称”:“美国美元”,“3。To_Currency代码”:“EGP”,“4。To_Currency名称” :“埃及镑”,“5。汇率”:“17.86300000”,“6。最后刷新”:“2017-12-24 14:38:20”,“7。时区”:“UTC”}}

以下我的代码捕获字符串值

@Override
    protected String doInBackground(String... f_url) {



        String urlStr = "https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&from_currency="
                + textto.getText()
                + "&to_currency="
                + textfrom.getText()
                + "&apikey=XXXXXXXXX";

        String data="";
        String converted="";

        try {

            URL url = new URL(urlStr);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String line ="";
            while (line != null)
            {
                line=bufferedReader.readLine();
                data = data +line;
            }

            JSONArray JA = new JSONArray(data);


                JSONObject JO = (JSONObject) JA.get(0);
                converted = JO.getString("5. Exchange Rate");


        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return converted;
    }

该方法返回空白值,在logcat中没有异常。我已经使用另一个JSON对象测试了代码,标识符中没有空格并且运行良好。

我在这里缺少什么帮助?

Update: this is what i get in the data as requested

答案

你在响应json中没有数组而是试试这个:

  JSONObject reader = new JSONObject(data);
  JSONObject sys  = reader.getJSONObject("Realtime Currency Exchange Rate");
  String currency = sys.getString("5. Exchange Rate");
另一答案

尝试使用以下代码

 JSONObject JA = new JSONObject(data);
 JSONObject JO = (JSONObject) JA.getJSONObject("Realtime Currency Exchange Rate");
 converted = JO.getString("5. Exchange Rate");

以上是关于从JSON对象获取字符串值失败如果Identifier有空格android的主要内容,如果未能解决你的问题,请参考以下文章

从基于 Siesta 实体的 JSON 初始化领域对象失败

无法从 sveltekit 循环中的 JSON 对象获取值

如果包含 json 文档作为字符串,如何从 MySQL(5.6) 列中获取值

从 std 对象中回显 json 以获取更多值

如何从 PHP 中获取 JSON 值?

ajax 在 asp.net webforms 中返回 json 对象的身份验证失败