解决 Jackson反序列化 Unexpected token ... , expected VALUE_STRING: need JSON String that contains type id

首先看到这类提示错误,我们应该知道这个肯定是锁获取的数据不符合JSON格式

例如在Redis中我们存储的如下集合

[
            {
                "inviterId": 1747,
                "userName": "x1**[email protected]",
                "currencyId": null,
                "symbol": null,
                "feeAmount": 132973232.86878297748704000000,
                "commissionFee": "132973232.868"
            },
            {
                "inviterId": 447,
                "userName": "1*[email protected]",
                "currencyId": null,
                "symbol": null,
                "feeAmount": 113770242.85038540344352000000,
                "commissionFee": "113770242.85"
            }
        ]

一看便知道不符合Json的格式规范(键值),一般情况下你默认使用RedisTemplate<Object, Object>中字符串的的get方法去获取额时候,因为不符合格式,反序列化会失败。哪我们如何解决啦。添加如下的代码既可以解决问题

  @Bean
	public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory) {
		StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
		stringRedisTemplate.setConnectionFactory( factory );
		return stringRedisTemplate;
	}

我们去解析的时候注入

@Resource(name = "stringRedisTemplate")
    private RedisTemplate<String, String> stringRedisTemplate;

然后使用该对象去获取值,即可正常解决该问题。

this.stringRedisTemplate.opsForValue().get("COMMON:KEY").toString();

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章