GsonBuilder registerTypeAdapter反序列化

时间:2014-08-27 15:23:59

标签: java android gson resttemplate spring-android

我有以下休息模板(用于服务器的json请求):

public RestTemplate createRestTemplate() {
    RestTemplate restTemplate = new RestTemplate();

    GsonBuilder builder = new GsonBuilder();
    builder.registerTypeAdapter(Image.class, new ImageDeserializer());
    builder.registerTypeAdapter(MetaData.class, new MetaDataDeserializer());
    builder.registerTypeAdapter(Vector.class, new VectorsDeserializer());

    GsonHttpMessageConverter jsonConverter = new GsonHttpMessageConverter();
    jsonConverter.setGson(builder.create());

    FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();
    StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
    final List<HttpMessageConverter<?>> listHttpMessageConverters = restTemplate.getMessageConverters();


    listHttpMessageConverters.add(jsonConverter);
    listHttpMessageConverters.add(formHttpMessageConverter);
    listHttpMessageConverters.add(stringHttpMessageConverter);
    restTemplate.setMessageConverters(listHttpMessageConverters);
    return restTemplate;
}

由于某种原因,对解串器VectorsDeserializer的第三次registerTypeAdapter调用什么都不做。我可能在这里遗漏了一些东西,非常欢迎任何想法/澄清。

1 个答案:

答案 0 :(得分:3)

我假设你正在使用java.util.Vector

我猜,这是因为使用普通Vector.class代替

new TypeToken<Vector<Whatever>>() {}.getType()

在注册中。