Json上的错误反序列化

时间:2014-01-13 18:56:22

标签: java android json gson

我正在尝试反序列化我的对象,但我不会得到任何错误!

我在android上使用gson来读取json文件。

我的反序列化

这是我的请求类,我使用的是休息服务器。

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

我的对象:

这是我的getter和setter

    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:

这是我的字符串respStr

上的json字符串
     [{"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"}]

我做错了什么?我不能直接去实现吗?

1 个答案:

答案 0 :(得分:1)

您似乎有一组SeguradoraLista个对象。

因此,只需创建TypeToken类型的List<SeguradoraLista>

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

实际上,Collection<SeguradoraLista>也可以。