Olá galerá tudo blz?
To com um pequeno/grande problema quando estou tentando receber um JSON que vem mais de um objetos da mesma instancia e eu queria poder receber isso em um Arraylist desse Objeto para que eu possa salvar no meu banco de dados.
Segue o código da minha classe GetHttp que é onde eu faço toda a parte de trazer o JSON e tento criar as classes com ele.
[code]package cyborg.rpgx;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.lang.reflect.Type;
import java.net.URI;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreProtocolPNames;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import cyborg.rpgx.model.Friends;
import cyborg.rpgx.model.Game;
import cyborg.rpgx.model.Initialize;
import cyborg.rpgx.model.News;
import cyborg.rpgx.model.User;
import cyborg.rpgx.model.listFriend;
import android.util.Log;
public class GetHttp {
public GetHttp() {
super();
// TODO Auto-generated constructor stub
}
public String page = "";
private ArrayList arrayGame;
private ArrayList arrayFriends;
private ArrayList arrayNews;
private Type gameType = new TypeToken<List<Game>>() {}.getType();
private Type friendsType = new TypeToken<List<Friends>>() {}.getType();
private Type newsType = new TypeToken<List<News>>() {}.getType();
public GetHttp(String URL) throws Exception{
BufferedReader bufferedReader = null;
try{
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "android");
HttpGet request = new HttpGet();
request.setHeader("Content-Type", "text/plain; charset=utf-8");
request.setURI(new URI(URL));
HttpResponse response = client.execute(request);
bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer stringBuffer = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
Log.d("GetHttp","Iniciando leitura de buffer.");
while ((line = bufferedReader.readLine()) != null){
stringBuffer.append(line + NL);
Log.d("GetHttp", stringBuffer.toString());
}
bufferedReader.close();
Log.d("GetHttp", "Leitura de buffer finalizada");
page = stringBuffer.toString();
}catch (Exception e) {
Log.e("GetHttp", e.toString());
}finally{
if (bufferedReader != null){
try{
bufferedReader.close();
}catch (IOException e){
Log.e("GetHttp", e.toString());
}
}
}
}
public User JSONFile(String data){
try{
String urlx = "http://189.64.50.27/CyborgService/login.php?request=";
String urluser =urlx+"1&"+data;
String urlfriend =urlx+"3&"+data;
String urlnews =urlx+"2&"+data;
String urlgame =urlx+"4&"+data;
//Le a pagina
GetHttp inituser = new GetHttp(urluser);
GetHttp initfriend = new GetHttp(urlfriend);
GetHttp initnews = new GetHttp(urlnews);
GetHttp initgame = new GetHttp(urlgame);
String pageuser = inituser.page;
String pagefriends = initfriend.page;
String pagenews = initnews.page;
String pagegame = initgame.page;
Gson gson = new Gson();
User user = null;
try {
user = gson.fromJson(pageuser, User.class);
}catch (Exception e) {
// TODO: handle exception
Log.e("user", e.toString());
}
try{
arrayGame = gson.fromJson(pagegame, gameType); // É aqui o erro. Penso que seja a variavel gameType que está com problema.
//arrayGame = gson.fromJson(pagegame, gameType);
}catch (Exception e) {
// TODO: handle exception
Log.e("Array", e.toString());
}
try{
Game gamex = (Game) arrayGame.get(1);
Log.e("GAME", "SUCESS");
//aqui vai o metodo de inserção no banco junto com o try/catch
// criar um for/while parar poder realizar as 'n' inserções
// for (int i = 0; i < arrayGame.size(); i++) {
Log.e("GAMEX", "GAME INSERT");
//}
} catch (Exception e) {
// TODO: handle exception
Log.e("Game", e.toString());
Log.d("ADD Games", "Não foi possivel fazer a inserção de Jogos no banco;");
}
Log.d("WebService", "Dados baixados com sucesso!");
return user;
}catch (Exception e) {
Log.e("GSON",e.toString());
}
return null;
}
}
[/code]
O meu JSON retornado:
O erro:
Já tentei tudo o que eu sabia e até debuguei o GSON, mas não consegui achar o problema, comentei no código onde acho que possa ser o problema.
Agradeço desde já pela ajuda pessoal.