2014-01-13 3 views
-1

Я пытаюсь десериализовать свой объект, но я не могу получить ошибку!Ошибки на Json deserialize

Я использую gson на android, чтобы прочитать json-файл.

Мой Deserialize

это мой класс запрос, я с помощью сервера отдыха.

 public Object getListaSeguradoras(String _codPais, String _tipoPesquisa) 
{ 

    try { 

     HttpClient httpClient = new DefaultHttpClient(); 

     HttpPost post = new HttpPost(Config.WS_PATH); 
     post.setHeader("content-type", "application/json; charset=UTF-8"); 
     post.addHeader("Client-Application","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); 


     //Make object in JSON format 
     JSONObject dato = new JSONObject(); 

     dato.put("CodPais", _codPais); 
     dato.put("TipoPesquisa", _tipoPesquisa); 

     StringEntity entity = new StringEntity(dato.toString()); 
     post.setEntity(entity); 

     HttpResponse resp = httpClient.execute(post); 
     String respStr = EntityUtils.toString(resp.getEntity()); 

     Gson gson = new Gson(); 

     Type collectionType = new TypeToken<Collection<SeguradoraLista>>(){}.getType(); 
     Collection<SeguradoraLista> ListaSeguradoras = gson.fromJson(respStr, collectionType); 

     return ListaSeguradoras; 

    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

Мой объект:

Это мой добытчик и сеттер

public class SeguradoraLista{ 

    public String SeguradoraId; 
    public String Nome; 

    public String getSeguradoraId() { 
     return this.SeguradoraId; 
    } 

    public String getNome() { 
     return this.Nome; 
    } 

    public void setSeguradoraId (String SeguradoraId) { 
     this.SeguradoraId = SeguradoraId; 
    } 

    public void setNome (String Nome) { 
     this.Nome = Nome; 
    } 
} 

Мой JSON:

это JSON строка на моей строке respStr

 [{"SeguradoraId":"19","Nome":"AIG Europe"}, 
{"SeguradoraId":"25","Nome":"AIOI Insurance Co. Of Europe"}, 
{"SeguradoraId":"28","Nome":"Aktiv Forsikring A/S"}, 
{"SeguradoraId":"160","Nome":"Enter Forsikring AS"}, 
{"SeguradoraId":"167","Nome":"Euro Insurances Ltd."}, 
{"SeguradoraId":"189","Nome":"Försäkrings-AB Volvia"}, 
{"SeguradoraId":"219","Nome":"Gjensidige NOR Forsikring"}, 
{"SeguradoraId":"245","Nome":"If Skadeforsikring NUF"}, 
{"SeguradoraId":"265","Nome":"Jernbanepersonalets Forsikring Gjensiding"}, 
{"SeguradoraId":"271","Nome":"KLP Skadeforsikring AS"}, 
{"SeguradoraId":"284","Nome":"Landbruksforsikring"}, 
{"SeguradoraId":"309","Nome":"Lloyd's v/Vital Skade AS"}, 
{"SeguradoraId":"459","Nome":"SpareBank 1 Skadeforsikring AS"}, 
{"SeguradoraId":"472","Nome":"Tennant Forsikring nuf"}, 
{"SeguradoraId":"473","Nome":"Terra Skadeforsikring AS"}, 
{"SeguradoraId":"494","Nome":"Trygg-Hansa Forsikring Nuf"}, 
{"SeguradoraId":"517","Nome":"Vesta Skadeforsikring A/S"}, 
{"SeguradoraId":"536","Nome":"Zürich Forsikring"}] 

что я делаю неправильно? Я не могу сделать это прямое обезжиривание?

+0

Что такое 'SeguradoraLista'? –

+0

Так жаль, это мой объект, я исправляю свой пост. – kaub0st3r

ответ

1

У вас, кажется, есть массив из SeguradoraLista объектов.

Так просто создать TypeToken типа List<SeguradoraLista>

Type collectionType = new TypeToken<List<SeguradoraLista>>() {}.getType(); 
List<SeguradoraLista> ListaSeguradoras = gson.fromJson(respStr, collectionType); 

На самом деле, Collection<SeguradoraLista> будет работать.

+0

Извините, я исправлю свое сообщение, SeguradoraLista - это мой объект – kaub0st3r

+0

Я стараюсь использовать список и не работать! Временно я использую это (THOR): «ArrayList roomTypes = new ArrayList (); JSONArray jsonArray = новый JSONArray (respStr); for (int i = 0; i kaub0st3r

+0

@ kaub0st3r Если JSON, полученный из ответа HTTP, является тем, что вы нам показали, то то, что у меня выше, будет работать. Собственно, то, что у вас есть в вашем вопросе, должно работать нормально. –