• 胡飞飞
    2019-03-23
    老师,当List<T>的情况怎么处理比较好,ParameterizedTypeReference<Customer<T>> 这样获得的T对象能遍历、能输出,但是在修改的时候 依然会报LinkedHashMap can not be cast 的异常,现在要修改的话不得不先toString() 然后再用json转一下,有啥好的解决方法吗

    作者回复: ParameterizedTypeReference<List<Customer>>不可以么?还是说Customer也是带泛型的?在ParameterizedTypeReference里把T都变成具体类型。

    
     2
  • 慌张而黑糖
    2020-02-03
    老师我有个疑问就是,为什么在注册RestTemplate的时候,直接return new RestTemplate()的话,创建一个coffee的话会报:Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Current token (START_OBJECT) not numeric, can not use numeric value accessors; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Current token (START_OBJECT) not numeric, can not use numeric value accessors的错误,使用builder.bulid()就不会报这个错误,不知道为什么json为什么会解析出错,感觉bulid出来的RestTemplate配置了一些东西,希望老师能够给解答一下,web服务启动的是第六章的springbucks项目。
    展开

    作者回复: RestTemplateBuilder是做了很多额外的配置的,比如我怎么去支持@JsonComponent之类的,可以读一下RestTemplateBuilder 的代码,再RestTemplateAutoConfiguration里是怎么初始化RestTemplateBuilder的。

     2
    
  • 大妖怪😀
    2019-12-23
    老师,您好:
          我做了一个测试,在WaiterService中将Coffee的字段新增或者修改,然后在CustomerService中获取并转换的时候,发现系统自动会忽略新增或者修改的字段,不会报错。
          那么我们在真正使用的时候,系统肯定是及其复杂的,一个服务可能会被很多系统使用。那么这种各个系统间bean的属性修改,其他系统如何同步呢?有没有什么好的方法呢?难道每次都要通知其他使用该系统的人去更新吗?

    作者回复: 反序列化时忽略当前没有的属性就是一种兼容性,这样在服务端新增属性,不关心它的系统就无需升级。一般我们不建议删除或者修改已经发布的类型,也不建议在这些类里用枚举,以免碰到一个不认识的枚举值转换报错。

    
    
  • 荣思敏
    2019-09-02
    ParameterizedTypeReference<List<Coffee>> ptr =
                    new ParameterizedTypeReference<List<Coffee>>() {};
    老师好,看了这个课程我才知道这个类,我立即想到我之前的项目里面,去调一个接口,返回的就是List<MyObject> ,然后我定义了一个MyObject去接收,然后就报了转换异常,我实在没办法了,之好先定义List<Map<>>先接收,然后再从Map转换成MyObject。----->看了这节课我立即去更改我的代码了,可是碰到了问题,我能接收到List<MyObject>的size为4(长度是对的),但是里面每个实体类的属性都为null,意思是没有接收到.....我用的springboot版本是1.5.2,且没配置httpclient。您能不能给些提示,这是什么导致的,给点方向我去改下我原来的代码
    展开

    作者回复: 感觉是你的反序列化有问题,你可以看看你的JSON串是否是正确的,返回单个对象是否可以正常反序列化

     1
    
  • tongmin_tsai
    2019-07-28
    丁老师,我们有这样的需求,比方说,跟前端使用一样的controller接口,接口是使用了统一返回做封装的,比如是Result<T>的泛型数据,resttemplate好像不能支持这样的结构,如果可以支持,要怎么使用呢?

    作者回复: 每次T是确定的么?还是T也不知道?如果不确定T,那你让RestTemplate怎么反序列化呢。或者你都是JSON的,不关心内容时就直接Result<String>回来。

    
    
  • 饭粒
    2019-07-15
    不用 ParameterizedTypeReference<T> 这样的可以。
    List<Coffee> coffees = new ArrayList<>();
    ResponseEntity<? extends List> responseEntity = restTemplate.exchange(coffeeUri, HttpMethod.GET, null, coffees.getClass());
    responseEntity.getBody().forEach(c -> log.info("Coffee: {}", c));

    作者回复: 你再试试复杂的泛型类型呢,是不是一样都能支持

     2
    
  • 。。。
    2019-06-16
    老师你好,工程里的2个类:MoneyDeserializer和MoneySerializer,不理解在代码里它是怎么用的?没有找到具体使用这2个类的地方,老师可以说明一下吗~谢谢

    作者回复: 这个上面添加了@JsonComponent,SpringBoot会把它们注册进来,Jackson JSON自己会使用它们来做Money类型的序列化和反序列化的。

    
    
我们在线,来聊聊吧