解決redis序列號和反序列化問題

最近遇到了一個問題,將

List<Map<String, Object>>
類型數據以list形式存入到redis之后,發現取出來時數據格式完全不對,根據報錯信息發現是反序列化問題,遇到類似問題,主要有兩種解決方案

1.使用序列號工具

例如,Java中常用的序列化工具有Jackson、Gson等。這些工具能夠將對象序列化為字符串,并能夠準確地將字符串反序列化為對象。

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;public class RedisUtils {private static final ObjectMapper objectMapper = new ObjectMapper();public static String serialize(Object object) throws JsonProcessingException {return objectMapper.writeValueAsString(object);}public static <T> T deserialize(String json, Class<T> clazz) throws JsonProcessingException {return objectMapper.readValue(json, clazz);}
}

使用Jackson的ObjectMapper來進行序列化和反序列化操作,serialize方法將對象序列化為字符串,deserialize方法將字符串反序列化為對象

2.使用JSON字符串存儲(推薦)

直接使用JSON字符串進行存儲。我們可以將對象轉換為JSON字符串,并存儲到Redis中。當需要獲取數據時,我們可以將存儲的JSON字符串轉換為對象。

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;// 將 List<Map<String, Object>> 轉換為 JSON 字符串ObjectMapper objectMapper = new ObjectMapper();String json;try {json = objectMapper.writeValueAsString(list);} catch (JsonProcessingException e) {logger.error("在listInRedis方法中處理Redis時發生錯誤", e);throw new RuntimeException(e);}// 存儲到 RedisredisTemplate.opsForValue().set(key, json);
// 從 Redis 獲取 JSON 字符串String value = (String) redisTemplate.opsForValue().get(key);// 將 JSON 字符串轉換回 List<Map<String, Object>>try {List<Map<String, Object>> listOfMaps = objectMapper.readValue(value,new TypeReference<List<Map<String, Object>>>() {});logger.info("listInRedis從redis中查詢到的結果Key:{}-----::{}", key, listOfMaps);} catch (JsonProcessingException e) {throw new RuntimeException(e);}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81101.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81101.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81101.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android學習總結之設計場景題

設計圖片請求框架的緩存模塊 核心目標是通過分層緩存策略&#xff08;內存緩存 磁盤緩存&#xff09;提升圖片加載效率&#xff0c;同時兼顧內存占用和存儲性能。以下是針對 Android 面試官的回答思路&#xff0c;結合代碼注釋說明關鍵設計點&#xff1a; 一、緩存架構設計&…

Webug3.0通關筆記14 第十四關:存儲型XSS

目錄 第十四關:存儲型XSS 1.打開靶場 2.源碼分析 3.滲透實戰 第十四關:存儲型XSS 本文通過《webug3靶場第十四關 存儲型XSS》來進行存儲型XSS關卡的滲透實戰。 存儲型 XSS&#xff08;Stored Cross - Site Scripting&#xff09;&#xff0c;也被稱為持久型 XSS&#xff…

Java父類、子類實例初始化順序詳解

1、完整的初始化順序&#xff08;含繼承&#xff09; 1、父類的靜態初始化 父類靜態變量默認值 → 父類靜態變量顯式賦值 父類靜態代碼塊&#xff08;按代碼順序執行&#xff09;。 2、子類的靜態初始化 子類靜態變量默認值 → 子類靜態變量顯式賦值 子類靜態代碼塊&…

13.組合模式:思考與解讀

原文地址:組合模式&#xff1a;思考與解讀 更多內容請關注&#xff1a;7.深入思考與解讀設計模式 引言 在軟件開發中&#xff0c;是否曾經遇到過這樣一種情況&#xff1a;你有一個對象&#xff0c;它本身很簡單&#xff0c;但是它包含了其他類似的對象。隨著系統變得越來越復…

OpenCV實戰教程 第一部分:基礎入門

第一部分&#xff1a;基礎入門 1. OpenCV簡介 什么是OpenCV及其應用領域 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一個開源的計算機視覺和機器學習軟件庫&#xff0c;于1999年由Intel公司發起&#xff0c;現在由非營利組織OpenCV.org維護。Ope…

虛幻商城 Quixel 免費資產自動化入庫(2025年版)

文章目錄 一、背景二、問題講解1. Quixel 免費資產是否還能一鍵入庫?2. 是不是使用了一鍵入庫功能 Quixel 的所有資產就能入庫了?3. 一鍵入庫會入庫哪些資產?三、實現效果展示四、實現自動化入庫五、常見問題1. 出現401報錯2. 出現429報錯3. 入庫過于緩慢4. 入庫 0 個資產一…

uni-app - 小程序使用高德地圖完整版

文章目錄 ??功能描述??效果??開發環境??代碼部分??功能描述 頁面自動通過定位獲取用戶位置并展示周邊POI數據,同時支持關鍵詞輸入實時聯想推薦關聯地點信息, 實現精準智能的地點發現與檢索功能。 ??效果 ??開發環境 unibest2.5.4nodev18.20.5pnpm9.14.2wot-des…

牛客:AB4 逆波蘭表達式求值

鏈接&#xff1a;逆波蘭表達式求值_牛客題霸_牛客網 題解&#xff1a; 利用棧&#xff0c;遍歷字符串數組&#xff0c;遇到運算數則入棧&#xff0c;遇到運算符則取出棧頂兩個運算數進行運算&#xff0c;并將運算結果入棧。 class Solution { public:/*** 代碼中的類名、方法…

Ant(Ubuntu 18.04.6 LTS)安裝筆記

一、前言 本文與【MySQL 8&#xff08;Ubuntu 18.04.6 LTS&#xff09;安裝筆記】同批次&#xff1a;先搭建數據庫&#xff0c;再安裝JDK&#xff0c;后面肯定就是部署Web應用。其中Web應用的部署使用 Ant 方式&#xff0c;善始善終&#xff0c;特以筆記。 二、準備 &#xf…

ultralytics 目標檢測 混淆矩陣 背景圖像 沒被記錄

修改 utils/metrics.py ConfusionMatrix def process_batch(self, detections, gt_bboxes, gt_cls):"""Update confusion matrix for object detection task.Args:detections (Array[N, 6] | Array[N, 7]): Detected bounding boxes and their associated inf…

iview 如何設置sider寬度

iview layout組件中&#xff0c;sider設置了默認寬度和最大寬度&#xff0c;在css樣式文件中修改無效&#xff0c;原因是iview默認樣式設置在了element.style中&#xff0c;只能通過行內樣式修改 樣式如下&#xff1a; image.png image.png 修改方式&#xff1a; 1.官方文檔中寫…

go-zero(十七)結合DTM :實現分布式事務

1. 基礎概念介紹 1.1 什么是分布式事務 在微服務架構中&#xff0c;一個業務操作常常需要調用多個服務來完成。例如&#xff0c;在電商系統中下單時&#xff0c;需要同時操作訂單服務和庫存服務。這種跨服務的操作就需要分布式事務來保證數據一致性。 分布式事務面臨以下挑戰…

2025 簡易Scrum指南(簡體中文版)

Scrum是一個輕量級的、以團隊為中心的框架&#xff0c;用于解決復雜的問題并創造價值。Scrum有意保持非完整性&#xff0c;Scrum的設計初衷旨在依靠使用者的集體智慧來不斷演進構建。 Scrum建立在實驗主義和精益思想的基礎上&#xff0c;它賦能團隊靈活巧妙地工作&#xff0c;…

2025最新福昕PDF編輯器,PDF萬能處理工具

軟件介紹 Foxit PDF Editor Pro 2025 中文特別版&#xff08;以前稱為 Foxit PhantomPDF Business&#xff09;是一款專為滿足各種辦公需求而設計的業務就緒的PDF工具包。 軟件特點 1. 強大的PDF編輯能力 創建新文檔&#xff1a;用戶可以從無到有地構建PDF文檔&#xff0c;添…

ollama的若干實踐

1. 本地ollama 1.1 本地安裝ollama 方法 1&#xff1a;手動檢查最新版本并下載 訪問 Ollama 的 GitHub Releases 頁面&#xff1a; 打開 https://github.com/ollama/ollama/releases 查看最新的穩定版本&#xff08;如 v0.7.0 或更高&#xff09; 手動下載最新版本&#xff08…

Spring Security源碼解析

秒懂SpringBoot之全網最易懂的Spring Security教程 SpringBoot整合Spring-Security 認證篇&#xff08;保姆級教程&#xff09; SpringBoot整合Spring Security【超詳細教程】 spring security 超詳細使用教程&#xff08;接入springboot、前后端分離&#xff09; Security 自…

LeetCode 3392.統計符合條件長度為 3 的子數組數目:一次遍歷模擬

【LetMeFly】3392.統計符合條件長度為 3 的子數組數目&#xff1a;一次遍歷模擬 力扣題目鏈接&#xff1a;https://leetcode.cn/problems/count-subarrays-of-length-three-with-a-condition/ 給你一個整數數組 nums &#xff0c;請你返回長度為 3 的 子數組&#xff0c;滿足…

讀論文筆記-CoOp:對CLIP的handcrafted改進

讀論文筆記-Learning to Prompt for Vision-Language Models Problems 現有基于prompt engineering的多模態模型在設計合適的prompt時有很大困難&#xff0c;從而設計了一種更簡單的方法來制作prompt。 Motivations prompt engineering雖然促進了視覺表示的學習&#xff0c…

從零構建 MCP Server 與 Client:打造你的第一個 AI 工具集成應用

目錄 &#x1f680; 從零構建 MCP Server 與 Client&#xff1a;打造你的第一個 AI 工具集成應用 &#x1f9f1; 1. 準備工作 &#x1f6e0;? 2. 構建 MCP Server&#xff08;服務端&#xff09; 2.1 初始化服務器 &#x1f9e9; 3. 添加自定義工具&#xff08;Tools&…

Django 自定義celery-beat調度器,查詢自定義表的Cron表達式進行任務調度

學習目標&#xff1a; 通過自定義的CronScheduler調度器在兼容標準的調度器的情況下&#xff0c;查詢自定義任務表去生成調度任務并分配給celery worker進行執行 不了解Celery框架的小伙伴可以先看一下我的上一篇文章&#xff1a;Celery框架組件分析及使用 學習內容&#xff…