java 将redis的数据批量取出来的时候遇到json格式转换异常
需求:将数据存入redis 存放的数据结构是hash 现在需要把它批量取出
批量取出的方式有很多,这里记录的是取出来以后数据反序列化成java实体时候的异常
线上代码不贴,模拟该代码
UserLoginParams userLoginParams = new UserLoginParams(); userLoginParams.setDeviceId(1+""); userLoginParams.setPassword("123456"); userLoginParams.setPhone(1+""); // Mono mono = userService.userLogin(userLoginParams); String s = JSON.toJSONString(userLoginParams); stringRedisTemplate.opsForHash().put("test1","1",s); Map<Object, Object> test = stringRedisTemplate.opsForHash().entries("test1"); String o = (String) test.get("1"); String s1 = JSON.toJSONString(o); UserLoginParams userLoginParams1 = JSON.parseObject(s1, UserLoginParams.class);
运行结果 提示异常:
com.alibaba.fastjson.JSONException: syntax error, expect {, actual string, pos 0, fastjson-version 1.2.51
修改代码
UserLoginParams userLoginParams = new UserLoginParams(); userLoginParams.setDeviceId(1+""); userLoginParams.setPassword("123456"); userLoginParams.setPhone(1+""); Mono mono = userService.userLogin(userLoginParams); String s = JSON.toJSONString(userLoginParams); stringRedisTemplate.opsForHash().put("test1","1",s); Map<Object, Object> test = stringRedisTemplate.opsForHash().entries("test1"); String o = (String) test.get("1"); UserLoginParams userLoginParams1 = JSON.parseObject(o, UserLoginParams.class);
再次运行断点结果:
没什么技术难点,就只是一个API的使用,在关于字符串转换的时候,经常可能会遇到字符串不能转成实体,或者字符串有很多转义字符的情况!!