欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JSON序列化Redis讀取出錯(cuò)問(wèn)題解決方案

 更新時(shí)間:2020年09月17日 11:08:21   作者:賈樹(shù)丙  
這篇文章主要介紹了JSON序列化Redis讀取出錯(cuò)問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

報(bào)錯(cuò)

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

問(wèn)題分析

在寫(xiě)入緩存的時(shí)候,hash結(jié)構(gòu),它的value值,在寫(xiě)入前使用JSON 序列化了,JSON.toJSONString(value)

在取緩存的時(shí)候把一個(gè)Collection 作為對(duì)象序列化了,并不是把List 序列化,所以在反序列化的時(shí)候不能用List 來(lái)解析

// 讀取緩存返回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);

問(wèn)題出在這里了,把Collection 轉(zhuǎn)成List 出錯(cuò) ,首先強(qiáng)轉(zhuǎn)是不行的

解決

// 讀取緩存直接返回 Collection
BoundHashOperations<String, String, String> hash = this.template.boundHashOps(key);
return hash.entries().values();

// 將Collection 轉(zhuǎn)成List,不能直接轉(zhuǎn)成對(duì)象,需要先轉(zhuǎn)換成String ,再將單個(gè)String 反序列化成對(duì)象
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);
}

//可以再排個(gè)序,本身的hash 結(jié)構(gòu)是無(wú)序的 ans.sort(Comparator.comparing(BookCatalog::getCode));

return ans;

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java使用正則表達(dá)式判斷獨(dú)立字符的存在(代碼示例)

    Java使用正則表達(dá)式判斷獨(dú)立字符的存在(代碼示例)

    通過(guò)使用正則表達(dá)式,我們可以更加靈活地判斷字符串中是否包含特定的字符,并且可以控制匹配的條件,如獨(dú)立的字符,這為我們處理字符串提供了更多的選擇和功能,這篇文章主要介紹了Java使用正則表達(dá)式判斷獨(dú)立字符的存在,需要的朋友可以參考下
    2023-10-10
  • java 反射getClass .class 的使用方法示例

    java 反射getClass .class 的使用方法示例

    這篇文章主要介紹了java 反射getClass .class 的使用方法,結(jié)合實(shí)例形式分析了java類反射機(jī)制的相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • 解決idea中maven新增的配置文件xx.xml沒(méi)生效問(wèn)題

    解決idea中maven新增的配置文件xx.xml沒(méi)生效問(wèn)題

    這篇文章主要介紹了如何解決idea中maven新增的配置文件xx.xml沒(méi)生效問(wèn)題,公司項(xiàng)目有用自己的`私服,Maven正常去私服下載jar包是沒(méi)問(wèn)題的,但阿里云鏡像找不到相關(guān)的jar包報(bào)錯(cuò),文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Java實(shí)現(xiàn)MD5加密的方法

    Java實(shí)現(xiàn)MD5加密的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)MD5加密的方法,實(shí)例分析了基于java實(shí)現(xiàn)md5加密的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Java 讀取、獲取配置文件.properties中的數(shù)據(jù)

    Java 讀取、獲取配置文件.properties中的數(shù)據(jù)

    這篇文章主要介紹了Java 讀取、獲取配置文件.properties中的數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • RabbitMQ中Confirm消息確認(rèn)機(jī)制保障生產(chǎn)端消息的可靠性詳解

    RabbitMQ中Confirm消息確認(rèn)機(jī)制保障生產(chǎn)端消息的可靠性詳解

    這篇文章主要介紹了RabbitMQ中Confirm消息確認(rèn)機(jī)制保障生產(chǎn)端消息的可靠性詳解,生產(chǎn)者將數(shù)據(jù)發(fā)送到 RabbitMQ 的時(shí)候,可能數(shù)據(jù)就在半路給搞丟了,因?yàn)榫W(wǎng)絡(luò)問(wèn)題啥的,都有可能,需要的朋友可以參考下
    2023-12-12
  • JDBC核心技術(shù)詳解

    JDBC核心技術(shù)詳解

    這篇文章主要介紹了JDBC核心技術(shù)詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)JDBC的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Java如何判斷一個(gè)整數(shù)有多少位

    Java如何判斷一個(gè)整數(shù)有多少位

    這篇文章主要介紹了Java如何判斷一個(gè)整數(shù)有多少位問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Spring boot文件路徑映射配置代碼實(shí)例

    Spring boot文件路徑映射配置代碼實(shí)例

    這篇文章主要介紹了Spring boot文件路徑映射配置代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Maven入門(mén)教程之如何在idea中配置Maven

    Maven入門(mén)教程之如何在idea中配置Maven

    Maven是非常出色的項(xiàng)目管理工具,我們可以用它管理本地項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于Maven入門(mén)教程之如何在idea中配置Maven的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04

最新評(píng)論