jackson转字符串异常

来源:6-6 Jsonutil 封装及调试-1

慕运维0703663

2018-01-06

/**
* 字符串转对象
* @param str
* @param clazz
* @param <T>
* @return
*/
public static <T> T stringTOobj(String str, Class<T> clazz) {

   if (StringUtils.isEmpty(str) || clazz == null) {
       return null;
   }
   try {
       return clazz.equals(String.class) ? (T) str : objectMapper.readValue(str, clazz);
   } catch (Exception e) {
       log.warn("Parse string to object error", e);
       return null;
   }
}

从redis取出来的字符串转对象报错,但是直接传字符串进去是正常的

正常  JsonUtil.stringTOobj("{\"username\":\"admin\",\"password\":\"123456\"}", User.class);

异常 JsonUtil.stringTOobj(stringRedisTemplate.opsForValue().get(session.getId()),User.class) ;

org.codehaus.jackson.JsonParseException: Illegal character ((CTRL-CHAR, code 0)): only regular white space (\r, \n, \t) is allowed between tokens

 at [Source: java.io.StringReader@337f765f; line: 1, column: 2]





写回答

3回答

Geely

2018-01-09

是的,必须用到项目里,所以你给我的线索要尽量多,没补充之前真不知道上下文是什么样的。笑哭的表情。。


mapper.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true) ; 

在objectmapper增加这个配置。


0
0

慕运维0703663

提问者

2018-01-07

是这样的我们学的最终要用到实际的项目中去,所以我就用公司的项目来做练习了,redis用的是spring-boot-starter-data-redis这个包

//img.mukewang.com/szimg/5a51ec2f0001ccc013760502.jpg

0
1
kenja
用了一半的spring-boot-starter-data-redis 再用一半课程中的Jedis,出问题是正常的,建议redis这节直接去看怎么用stringRedisTemplate实现序列化,具体也是用的jackson只是写法不同(刚从坑里爬上来,我也是springboot,spring-data-jedis只是用起来简单,其实没Jedis自己封装灵活)
2018-02-08
共1条回复

Geely

2018-01-07

你好,同学,stringRedisTemplate.opsForValue().get(session.getId()),User.class 这个方法是什么方法?咱们课程里是没有这个方法的,它stringRedisTemplate.opsForValue().get(session.getId() 的返回值是什么呢? 把具体的返回值发上来一起看看呢

0
0

Java企业级电商项目架构 Tomcat集群与Redis分布式

Tomcat集群+Redis分布式+代码重构+源码原理解析

2685 学习 · 947 问题

查看课程