Pergunta

Eu não trabalho com JSON, muitas vezes, mas eu estava tendo um pouco de dificuldade apenas fazê-lo no Android sem outras bibliotecas.Eu stumbeled sobre De iões por Koush e gostaria de usá-lo para recuperar dados meteorológicos para Londres.O JSON api eu vou estar usando é de OpenWeather aqui.Tanto quanto eu posso dizer o JSON é válido, então agora estou preso no Android lado das coisas.Meu objetivo final é ter um objeto/Cadeia de relatórios de londres Main > temp.Este é o meu código Android, mas eu não tenho certeza do que fazer a seguir.Qualquer idéias?

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

Meu código é para "Completar" declaração de registo, mas agora eu estou tentando definir o resultado para o meu Objeto json que eu criei, então eu onu-comentário //json = result, mas eu recebo um erro no Eclipse.Qualquer ajuda?Eu gostaria que este método simplesmente a saída de Main -> Temp que (até agora) é 284.51.

Foi útil?

Solução

Típico de iões de uso é aynchronous, mas tem síncrono suporte.Em vez de usar setCallback (assíncrona), use get() (sincronização) para obtê-lo de volta de forma síncrona.Isto irá bloquear o Thread actual embora.

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

Outras dicas

Desde que você marcou a variável json como o final, eu não acho que você pode atribuí-la a ponto de resultar em seu onCompleted() método.

Eu recomendo a criação de uma AsyncTask com um HttpClient para realmente puxar o JSON.Eu acho que isso seria mais simples e limpo.

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

Se você quer realmente analisar o JSON, eu recomendo que procure no google GSON pacote

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top