Использование сетевой библиотеки для снятия JSON
Я не часто работаю с JSON, но у меня возникли некоторые проблемы, когда я делал это в Android без других библиотек. Я наткнулся на Иона у Коуша и хотел бы использовать его для получения данных о погоде в Лондоне. API-интерфейс JSON, который я буду использовать, взят из OpenWeather. Насколько я могу судить, JSON действителен, поэтому я застрял на стороне Android. Моя конечная цель состоит в том, чтобы иметь объект / строку, которая сообщает о londons Main > temp
, Это мой код Android, но я не уверен, что делать дальше. Есть идеи?
private void getTemperature() {
Log.d(TAG, "2");
final JsonObject json = new JsonObject();
Ion.with(this, "http://api.openweathermap.org/data/2.5/weather?q=London,uk")
.asJsonObject().setCallback(new FutureCallback<JsonObject>() {
@Override
public void onCompleted(Exception e, JsonObject result) {
// do stuff with the result or error
Log.d("TAG", "Complete");
//json = result;
}
});
}
Мой код попадает в оператор журнала "Complete", но теперь я пытаюсь установить результат для созданного мной объекта json, поэтому я не комментирую //json = result
, но я получаю ошибку в Eclipse. Любая помощь? Я хотел бы, чтобы этот метод просто выводил Main -> Temp
который (на данный момент) составляет 284,51.
3 ответа
Типичное использование ионов является асинхронным, но имеет синхронную поддержку. Вместо использования setCallback (async), используйте get() (sync), чтобы вернуть его синхронно. Это заблокирует ваш текущий поток, хотя.
final JsonObject json = Ion.with(this, "http://api.openweathermap.org/data/2.5/weather?q=London,uk")
.asJsonObject().
.get();
Если вы действительно хотите разобрать JSON, я бы порекомендовал пакет Googles GSON
Поскольку вы пометили переменную json как final, я не думаю, что вы можете переназначить ее так, чтобы в результате появился ваш метод onCompleted().
Я бы порекомендовал создать AsyncTask с HttpClient для фактического извлечения JSON. Я думаю, что это будет проще и чище.
Пример HttpClient http://www.mkyong.com/java/apache-httpclient-examples/