• 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的使用,在关于字符串转换的时候,经常可能会遇到字符串不能转成实体,或者字符串有很多转义字符的情况!!

  • 相关阅读:
    Android 屏幕适配比例
    不错的网站
    Android十大常用技术揭秘-挑战
    Linux 自己的常用命令
    Android 常用配置
    Android 边框 给控件添加边框
    Linux 常用命令大全
    TCP/IP、Http、Socket的区别
    Android 之基于 HTTP 协议的通信详解
    JavaScript基础:(加号,数值转换,布尔转换)
  • 原文地址:https://www.cnblogs.com/920913cheng/p/15751928.html
Copyright © 2020-2023  润新知