Usando a biblioteca de rede para puxar para baixo JSON
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.
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