我想要做的是處理活動貨幣JSON字符串並檢索它們的費率值。在android中解析JSON字符串
該網站我使用返回此:
{"target": "EUR", "success": true, "rate": 0.7298, "source": "USD", "amount": 0.73, "message": ""}
的URL:
http://currency-api.appspot.com/api/USD/EUR.json?key=KEY
對於美元到歐元的轉換。我想存儲在浮動的利率。我意識到我將不得不使用GSON或類似的東西來解析網站的JSON輸出,但到目前爲止,我還沒有一個可行的解決方案。我目前的AsyncTask看起來是這樣的:
class AsyncTest extends AsyncTask<Void,Void,Void>
{
protected void onPreExecute()
{
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params)
{
try {
URL url = new URL("http://currency-api.appspot.com/api/USD/EUR.json?key=KEY");
URLConnection connect = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(connect.getInputStream()));
String jsonObject = "";
String line = "";
while ((line = in.readLine()) != null)
jsonObject += line;
in.close();
Toast.makeText(getApplicationContext(), jsonObject, Toast.LENGTH_LONG).show();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result)
{
super.onPostExecute(result);;
}
}
這到底是什麼錯誤?它會導致運行時異常。我如何解析這個URL的速率?
什麼是運行時異常?發佈堆棧跟蹤。那裏有大量的JSON解析示例。 –
你應該使用StringBuilder而不是String,它更快:jsonObject .append(line); –
考慮使用[droidQuery](http://bit.ly/droidquery)庫輕鬆獲取數據,然後使用'$ .map(json)'方法解析,該方法將'JSONObject'轉換爲'HashMap'便於解析。 – Phil