在SpringBoot中使用RestTemplate来调用远端的服务,本质上返回来的都是Json字符串。在下边的例子中,我们使用List<Template>来接收远端返回来的值。Template是一个Java Model.
List<Template> list = restTemplate.getForEntity(urlFullTemplates, ArrayList.class).getBody();
这时候发现,Spring自动把Json字符串转换成了ArrayList<LinkedHashMap>, 而且运行的时候还没有报错。明明是把ArrayList<LinkedHashMap>赋给List<Template>, 为什么代码在运行的时候不报错呢?
因为泛型只是一个编译时期的概念,在运行的时候是不存在泛型的,只有List对象。所以上边的代码其实就是把ArrayList赋给List, 所以不报错。
那么如何把ArrayList<LinkedHashMap>转为正常的ArrayList<Template>呢?可以使用序列化的思维,先把ArrayList<LinkedHashMap>序列化到字节数组中,然后再反序列化的时候,直接反序列化成具体的对象。因为LinkedHashMap中的键值对实际上对应的就是POJO对象中的属性值,所以序列化与反序列化的时候每个属性基本上是一 一对应的。接下来是使用ArrayList<Group>举的例子。
这样,就把所有的ArrayList<LinkedHashMap>转化为了ArrayList<Group>对象了。
版权声明:本文为sundacheng1989原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。