报错
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.alibaba.fastjson.JSONException: syntax error, expect {, actual string, pos 1, fastjson-version 1.2.44
问题分析
在写入缓存的时候,hash结构,它的value值,在写入前使用JSON 序列化了,JSON.toJSONString(value)
在取缓存的时候把一个Collection 作为对象序列化了,并不是把List 序列化,所以在反序列化的时候不能用List 来解析
// 读取缓存返回String
BoundHashOperations<String, String, String> hash = this.template.boundHashOps(key);
Collection list = hash.entries().values();
return JSON.toJSONString(list);// 将String 解析成 List
String tmp = redisService.listHashObject(BOOK_CATALOG);
return JSON.parseArray(tmp, BookCatalog.class);
问题出在这里了,把Collection 转成List 出错 ,首先强转是不行的
解决
// 读取缓存直接返回 Collection
BoundHashOperations<String, String, String> hash = this.template.boundHashOps(key);
return hash.entries().values();// 将Collection 转成List,不能直接转成对象,需要先转换成String ,再将单个String 反序列化成对象
java.util.Collection tmp = redisService.listHashObject(BOOK_CATALOG);
List<String> list = new ArrayList<>(tmp);
List<BookCatalog> ans = new ArrayList<>(list.size());
for (String item : list) {
BookCatalog book = JSON.parseObject(item, BookCatalog.class);
ans.add(book);
}//可以再排个序,本身的hash 结构是无序的 ans.sort(Comparator.comparing(BookCatalog::getCode));
return ans;
原创文章,欢迎转载,转载请注明出处!
Redis读取出错,JSON序列化的问题的更多相关文章
-
PYTHON 学习笔记4 模块的使用、基本IO 写入读取、JSON序列化
前言 若在之前写代码的方式中,从Python 解释器进入.退出后再次进入,其定义的变量.函数等都会丢失.为了解决这个为,我们需要将需要的函数.以及定义的变量等都写入一个文件当中.这个文件就叫做脚本 随 ...
-
springboot 用redis缓存整合spring cache注解,使用Json序列化和反序列化。
springboot下用cache注解整合redis并使用json序列化反序列化. cache注解整合redis 最近发现spring的注解用起来真的是很方便.随即产生了能不能吧spring注解使用r ...
-
Spring整合Redis&;JSON序列化&;Spring/Web项目部署相关
几种JSON框架用法和效率对比: https://blog.csdn.net/sisyphus_z/article/details/53333925 https://blog.csdn.net/wei ...
-
在mvc返回JSON时出错:序列化类型为“System.Data.Entity.DynamicProxies.Photos....这个会的对象时检测到循环引用 的解决办法
在MVC中返回JSON时出错,序列化类型为“System.Data.Entity.DynamicProxies.Photos....这个会的对象时检测到循环引用. public ActionResul ...
-
可以将一些配置信息已json格式存在数据库中读取的时候序列化。
public partial class json序列化 : System.Web.UI.Page { protected void Page_Load(object sender ...
-
Python学习之json序列化
一.什么是序列化 在我们存储数据或者网络传输数据的时候,需要对我们的对象进行处理,把对象处理成方便存储和传输的数据格式.这个过程叫序列化,不同的序列化结果也不同,但目的是一样的,都是为了存储和传输 在 ...
-
.Net深入实战系列—JSON序列化那点事儿
序 当前主流的序列化JSON字符串主要有两种方式:JavaScriptSerializer及Json.net(Nuget标识:Newtonsoft.Json).JavaScriptSerializer ...
-
Windows Phone 六、JSON序列化
JSON序列化 public class Person { public int Id { get; set; } public string Name { get; set; } public in ...
-
Json序列化之.NET开源类库Newtonsoft.Json的研究
一.Json简介 JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的文 ...
随机推荐
-
Java for LeetCode 067 Add Binary
Given two binary strings, return their sum (also a binary string). For example, a = "11" b ...
-
Yii 配置默认controller和action
设置默认controller 在/protected/config/main.php添加配置 <?php return array( 'name'=>'Auto', 'defaultCon ...
-
eclipse安装github插件egit
http://jingyan.baidu.com/article/4853e1e529483c1909f726c3.html help->InstallNew Software,这是安装插件推荐 ...
-
转:修改类不重启tomcat 自动加载项目
可以修改类不用重启Tomcat加载整个项目(手工启动) 配置reloadable=true(自动重载) 使用Debug模式,前提是仅限于局部修改.(修改类不用重启--热加载) (rel ...
-
centos 7下安装python 3.6笔记
每次在centos上安装python 3都需要重新查资料,这次索性自己记下笔记. 首先安装gcc yum -y install gccyum install zlib-devel./configure ...
-
netdom remove 错误:netdom remove
自己用错了命令,直接将加入域的计算机使用dsrm删除了,本来应该使用netdom remove的,结果在域控制器上使用netdom remove错误,在客户端上登录时一样提示:netdom remov ...
-
The error may exist in com/bjpowernode/dao/StudentDao.xml ### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderExcept
The error may exist in com/bjpowernode/dao/StudentDao.xml### Cause: org.apache.ibatis.builder.Builde ...
-
angular-ui-router动态加载模块
1.定义index.html主页,对于通用的js就不用require依赖加载了,其中main.js作为主模块,用require添加系统路由模块. <!DOCTYPE html> <h ...
-
【字符串哈希】bzoj3916 [Baltic2014]friends
枚举断点,哈希判断. #include<cstdio> using namespace std; typedef unsigned long long ull; ull hs,hs1,hs ...
-
static_cast、dynamic_cast、const_cast和reinterpret_cast总结(转)
前言 这篇文章总结的是C++中的类型转换,这些小的知识点,有的时候,自己不是很注意,但是在实际开发中确实经常使用的.俗话说的好,不懂自己写的代码的程序员,不是好的程序员:如果一个程序员对于自己写的代码 ...