本文主要是介绍Unrecognized token ‘code’: was expecting 解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
当redis在Java中使用的时候,碰到序列化的Jackson2JsonRedisSerializer的时候,从redis中取字符串值,一直报错取不出来,但是数字可以取出来,问题就出在了序列化后存储的规范。(错误:Unrecognized token ‘code’: was expecting (JSON String, Number, Array, Object,‘true’, ‘false’ or ‘null’) )
通过序列化存到redis中的样子
普通的样子
可以看到是有区别的,所以取值错误,只要通过序列化存值,再取值是不会出错的
我们这里针对StringRedisSerializer,Jackson2JsonRedisSerializer和JdkSerializationRedisSerializer进行测试。
下面是,把3种Serializer保存到Redis中的结果:
1,所有的KeySerializer和HashKeySerializer都使用StringRedisSerializer,用其它Serializer的没有什么意义,就像最上面的例子一样。
2,上面序列化后的值,是保存到redis中的值,从Redis中读取回Java中后,值的内容都是一样的。
从上面的结果不难看出,
1,用StringRedisSerializer进行序列化的值,在Java和Redis中保存的内容是一样的
2,用Jackson2JsonRedisSerializer进行序列化的值,在Redis中保存的内容,比Java中多了一对双引号。
3,用JdkSerializationRedisSerializer进行序列化的值,对于Key-Value的Value来说,是在Redis中是不可读的。对于Hash的Value来说,比Java的内容多了一些字符。
(如果Key的Serializer也用和Value相同的Serializer的话,在Redis中保存的内容和上面Value的差异是一样的,所以我们保存时,只用StringRedisSerializer进行序列化)
看玩点赞哦!
这篇关于Unrecognized token ‘code’: was expecting 解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!