从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对象测试了代码,标识符中没有空格并且运行良好。
我在这里缺少什么帮助?
答案
你在响应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的主要内容,如果未能解决你的问题,请参考以下文章