我所在公司使用的是,spring boot + mybatis plus组合开发服务器端,在开发中也会使用到Redis作为缓存,通常的做法是,把从MySQL中查出来的Java对象序列化成字符串,然后存在Redis中,要用的时候再从Redis中取出来,然后然序列化成Java对象。
但是有一次我在缓存分页数据的时候发现一个问题
这是我模仿mybatis plus的Page自定义的一个page
@Data
在定义一个实体类
@Data
然后重现我之前的问题
@Test
![4252a972fe66610be89cdfc1cc232ece.png](https://i-blog.csdnimg.cn/blog_migrate/0f802d7400aa25bcb955baaa50e446ce.jpeg)
![1220392e34817c00e99bc40e033a3d95.png](https://i-blog.csdnimg.cn/blog_migrate/78c8f62ffd9af243039b8a8b6061ac03.jpeg)
如果这个数据是直接返回给前端的话,是没有问题的,因为在json里面就只有数组和对象两种,具体是什么类型的对象他不关心。但是这个结果入股还需要在Java中继续使用的话,那就需要注意了,你期待的是一个Java实体类对象,然而实际上是一个json对象。
那我们想要用Java实体类对象怎么办呢?
这里我使用的是Alibaba的fastJSON,Google的gson也可以实现。
Page<User> res = JSONObject.parseObject(str, new TypeReference<Page<User>>() {});
![ff8d0ddf31b6fc3ca75b397b142f2d54.png](https://i-blog.csdnimg.cn/blog_migrate/cd053dd0e35026a5f43131622d309a33.jpeg)
![6618e2d1f62cd5940f24c8785ea22e16.png](https://i-blog.csdnimg.cn/blog_migrate/1713b9aa2340ee35518e9e8a34c372c6.jpeg)
这里有讲这个typeReference的具体用法。
当然Gson里面也有类似的TypeToken,也可以实现这个需求。