Frage

Ich arbeite nicht oft mit JSON, aber ich hatte ein paar Probleme damit, es einfach in Android ohne andere Bibliotheken zu machen.Ich bin darüber gestolpert Ion von Koush und ich möchte damit Wetterdaten für London abrufen.Die JSON-API, die ich verwenden werde, stammt von OpenWeather hier.Soweit ich das beurteilen kann, ist JSON gültig, sodass ich jetzt auf der Android-Seite feststecke.Mein Endziel ist es, ein Objekt/eine Zeichenfolge zu haben, das Londons meldet Main > temp.Dies ist mein Android-Code, aber ich bin mir nicht sicher, was ich als Nächstes tun soll.Irgendwelche Ideen?

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;
    }
    });
}

Mein Code gelangt zur Protokollanweisung „Complete“, aber jetzt versuche ich, das Ergebnis auf mein von mir erstelltes JSON-Objekt festzulegen, also entferne ich den Kommentar //json = result, aber ich erhalte eine Fehlermeldung in Eclipse.Irgendeine Hilfe?Ich möchte, dass diese Methode einfach das ausgibt Main -> Temp was (Stand jetzt) ​​284,51 beträgt.

War es hilfreich?

Lösung

Die typische Ionennutzung ist asynchron, es gibt jedoch synchrone Unterstützung.Anstatt setCallback (async) zu verwenden, verwenden Sie get() (sync), um es synchron zurückzubekommen.Dadurch wird jedoch Ihr aktueller Thread blockiert.

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

Andere Tipps

Da Sie die JSON-Variable als final markiert haben, glaube ich nicht, dass Sie sie dem Punkt neu zuweisen können, der zu Ihrer onCompleted()-Methode führt.

Ich würde empfehlen, eine AsyncTask mit einem HttpClient zu erstellen, um den JSON tatsächlich abzurufen.Ich denke, das wäre einfacher und sauberer.

HttpClient-Beispielhttp://www.mkyong.com/java/apache-httpclient-examples/

Wenn Sie JSON tatsächlich analysieren möchten, würde ich das GSON-Paket von Google empfehlen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top