账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    redis反序列化问题
    50
    0
    报错如下:org.springtramework.core.convert.Conversionl-aiLedtxception: failed to convert from type java.Lang.String to type java.Lang.Long to vaLue 1{"beginTime":1638954300246,"currentPage":1,"endTime":1638954900246,"pcursor":H"}1; nested exception is java.lang.NumberFormatException: For input string: "{"beginTime":1638954300246,"currentPage":1,"endTime":1638954900246,"pcursor":"at org.springframework.core.convert.support.Conversionlltils.invokeConverter(ConversionUtils.java:43)at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:203)at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:187)at org.springframework.data.redis.serializer.GenericToStringSerializerSConverter.convert(GenericToStringSerializer.java:106)at org.springframework.data.redis.serializer.GenericToStringSerializer.deserialize(GenericToStringSerializer.java:70)at org.springframework.data.redis.core.Abstractoperations.deserializeValue(AbstractOperations.java:315)at org.springframework.data.redis.core.AbstractOperations$ValueDeserializingRedisCallback.doInRedis(AbstractOperations.java:55)at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:204)at org.springframework.data.redis.core.RedisTemplate.execute(RedisTemplate.java:166)at org.springframework.data.redis.core.Abstractoperations.execute(AbstractOperations.java:88)at org.springframework.data.redis.core.DefaultValueOperations.get(DefaultValueOperations.java:43)at com.czb.coupon.jobHandle.impl.JobHandle.getKsRefundRedisVO(JobHandle.java:439)at com.czb.coupon.jobHandle.impl.JobHandle.refundEvery5Min(JobHandle.java:259)at sun.reflect.GeneratedMethodAccessor2273.invoke(Unknowr) Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at com.xxl.job.core.handler.impl.MethodJobHandler.execute(MethodJobHandler.java:29)at com.xxl.job.core.thread.JobThread.run(JobThread.java:152)Caused by: java.lang.NumberFormatException: For input string: "{"beginTime":1638954300246,"currentPage":1,"endTime":1638954900246,"pcursor":"我是这么设置key的:Object result = redisService.getTemplate().opsForValue().get(KEY);@Overridepublic RedisTemplate<String, Object> getTemplate() { return redisTemplate;}@Autowired@Qualifier("redisTemplate")private RedisTemplate<String, Object> redisTemplate;这样拿value:redisService.getTemplate().opsForValue().set(KEY,"{\"value1\":\"aaa\"}");各位大佬帮忙看看吧
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 无心无忧i 普通会员 1楼

      Redis反序列化问题通常是由于以下几个原因导致的:

      1. 数据格式不匹配:Redis的数据格式与Java反序列化的Java对象不匹配。例如,Redis中的字符串是键值对,而Java中的对象通常有getter和setter方法。

      2. 键值对中包含的特殊字符:例如,逗号、空格等特殊字符可能会导致反序列化失败。

      3. 多余的引号:Redis中的字符串是以单引号或双引号组成的,而Java中的对象通常使用双引号。例如,如果字符串中包含一个双引号,那么在Java反序列化时,这个双引号就会被当作字符串的一部分。

      4. 使用的Java版本不同:Redis和Java的反序列化库可能会有不同的实现,导致问题。

      解决Redis反序列化问题的方法包括:

      1. 检查数据格式:确保Redis的数据格式与Java对象匹配。

      2. 使用转义字符:在使用特殊字符时,需要使用转义字符。例如,如果字符串中包含一个双引号,那么可以使用反斜杠()来转义这个引号。

      3. 使用正确的引号:确保所有的引号都是正确的,例如,如果字符串中包含一个单引号,那么应该使用单引号而不是双引号。

      4. 使用Java的反序列化库:如果以上方法都不能解决问题,那么可能需要使用Java的反序列化库来帮助解决。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部