Что я хочу сделать, это перевести строки JSON в реальном времени и получить их значения скорости.Parse JSON string in android
На сайте я использую это возвращает:
{"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
Для преобразования USD в евро. Я хочу сохранить скорость в поплавке. Я понимаю, что мне придется использовать 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 (строка); –
Рассмотрите возможность использования библиотеки [droidQuery] (http://bit.ly/droidquery), чтобы легко получить данные, затем проанализируйте с помощью метода '$ .map (json)', который преобразует 'JSONObject' в' HashMap' для легкого разбора. – Phil