Использование сетевой библиотеки для извлечения JSON

StackOverflow https://stackoverflow.com//questions/21010178

Вопрос

Я не часто работаю с JSON, но у меня возникли некоторые проблемы с тем, чтобы сделать это на Android без других библиотек.я наткнулся на Ион от Коуша и я хотел бы использовать его для получения данных о погоде в Лондоне.API JSON, который я буду использовать, взят из OpenWeather здесь.Насколько я могу судить, JSON действителен, поэтому теперь я застрял на стороне Android.Моя конечная цель - иметь объект/строку, сообщающую о Лондоне. 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;
    }
    });
}

Мой код попадает в оператор журнала «Завершение», но теперь я пытаюсь установить результат для моего созданного мной json-объекта, поэтому я удаляю комментарий //json = result, но я получаю сообщение об ошибке в Eclipse.Любая помощь?Я хотел бы, чтобы этот метод просто выводил Main -> Temp что (на данный момент) составляет 284,51.

Это было полезно?

Решение

Типичное использование ионов является асинхронным, но имеет синхронную поддержку.Вместо использования setCallback (async) используйте get() (sync), чтобы вернуть его синхронно.Однако это заблокирует вашу текущую тему.

final JsonObject json = Ion.with(this, "http://api.openweathermap.org/data/2.5/weather?q=London,uk")
.asJsonObject().
.get();

Другие советы

Поскольку вы пометили переменную json как окончательную, я не думаю, что вы сможете переназначить ее до той точки, которая приведет к созданию метода onCompleted().

Я бы рекомендовал создать AsyncTask с HttpClient, чтобы фактически получить JSON.Я думаю, это было бы проще и чище.

Пример HttpClienthttp://www.mkyong.com/java/apache-httpclient-examples/

Если вы хотите на самом деле проанализировать JSON, я бы порекомендовал пакет Google GSON.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top