Использование сетевой библиотеки для снятия 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/

Другие вопросы по тегам