Jackson:String转object反序列化失败
场景
消费mq时String转Object
代码
for (MessageExt msg : msgs) {String msgBody = new String(msg.getBody(), StandardCharsets.UTF_8);BinlogEvent binlogEvent = JsonUtil.silentString2Object(msgBody, BinlogEvent.class);binlogEvent.setPort(Long.valueOf(port));tConsumer.consume(binlogEvent);}
binlogEvent.setPort空指针,说明binlogEvent为空
debug报错信息
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`)at [Source: (String)"{ "before": {}, "after": { "id": 1019, "name": "ababababab", "score": 99 }, "source": { "version": "zzcdc:", "connector": "mysql", "name": "zzcdc:task:5017", "ts_ms": 1686193967, "db": "cdc", "table": "t1", "server_id": 192215017, "gtid": "", "file": "", "pos": 0, "row": 0, "partition_key": "5017:cdc:t1:1019" }, "op": "u", "ts_ms": 1686193967808, "transaction": null, "timestamp": "2023-06-08T11:12:47.808178366+08:00", "ts_u_ms": 1686193967808178}"; line: 1, column: 13] (through reference chain: com.zhuanzhuan.datasync.helper.mq.event.BinlogEvent["before"])
原因分析
Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`)
报错信息:意思是Object反序列化为String失败
String:
{"before": {},"after": {"id": 1019,"name": "ababababab","score": 99},"source": {"version": "zzcdc:","connector": "mysql","name": "zzcdc:task:5017","ts_ms": 1686193967,"db": "cdc","table": "t1","server_id": 192215017,"gtid": "","file": "","pos": 0,"row": 0,"partition_key": "5017:cdc:t1:1019"},"op": "u","ts_ms": 1686193967808,"transaction": null,"timestamp": "2023-06-08T11:12:47.808178366+08:00","ts_u_ms": 1686193967808178
}
承接实体Object:
public class BinlogEvent {private String before;private String after;private String source;private String op;private Long tsMs;private String transaction;private String timestamp;private Long tsUMs;
}
发现原因:JSON/Object数据不能用String承接
解决
方法1:使用Object承接
public class BinlogEvent {private Object before;private Object after;private Object sourceprivate String op;private Long tsMs;private Object transaction;private String timestamp;private Long tsUMs;
}
方法2:新建JSON对应实体类承接
public class BinlogEvent {private Object before;private Object after;private BinlogSourceEvent sourceprivate String op;private Long tsMs;private Object transaction;private String timestamp;private Long tsUMs;
}public class BinlogSourceEvent {private String version;private String connector;private String name;private Long tsMs;private String db;private String table;private Long serverId;private String gtid;private String file;private Long pos;private Long row;private String partitionKey;
}
相关文章:
Jackson:String转object反序列化失败
场景 消费mq时String转Object 代码 for (MessageExt msg : msgs) {String msgBody new String(msg.getBody(), StandardCharsets.UTF_8);BinlogEvent binlogEvent JsonUtil.silentString2Object(msgBody, BinlogEvent.class);binlogEvent.setPort(Long.valueOf(port));tCo…...
Spark_Core---6
spark 相关概念补充 课程目标 了解spark的安装部署知道spark作业提交集群的过程 6.1 spark的安装部署 1、下载spark安装包 http://spark.apache.org/downloads.html 高版本不存在cdh的编译版本,可以从官网下载源码版本,指定高版本hadoop进行编译 编译…...
游戏运营需要什么条件和准备?
游戏运营是一个复杂的过程,需要综合考虑多个因素。以下是一些游戏运营需要的条件和准备: 1、良好的游戏产品 首先,需要有一款优秀、有吸引力的游戏产品。游戏的质量和内容决定了用户是否愿意下载、留存和付费。 2、游戏运营团队 拥有专业…...
SVN限制Message提交的格式
限制Message提交的格式必须为以下格式 [Version] [Description] [TPA] [Doors] REPOS"$1" TXN"$2"# Make sure that the log message contains some text. SVNLOOK/usr/bin/svnlook MSG$SVNLOOK log -t "$TXN" "$REPOS"if [[ $MSG ~ …...
windows下安装anaconda、pycharm、cuda、cudnn、PyTorch-GPU版本
目录 一、anaconda安装及虚拟环境创建 1.anaconda的下载 2.Anaconda的安装 3.创建虚拟环境 3.1 环境启动 3.2 切换镜像源 3.3环境创建 3.4 激活环境 3.5删除环境 二、pycharm安装 1.pycharm下载 2.pycharm的安装 三、CUDA的安装 1.GPU版本和CUDA版本、cudnn版本、显卡…...
【计算机网络】传输层协议 -- UDP协议
文章目录 1. 传输层相关知识1.1 端口号1.2 端口号范围划分1.3 知名端口号1.4 一些相关命令 2. UDP协议2.1 UDP协议格式2.2 UDP协议的特点2.3 什么是面向数据报2.4 UDP的缓冲区2.5 UDP使用注意事项2.6 基于UDP的应用层协议 1. 传输层相关知识 传输层是计算机网络中的一个重要层…...
python制作超高难度走迷宫游戏,你要来挑战嘛~(赶紧收藏)
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 走迷宫,是一项充满智慧的挑战~ 作为经常刷短视频的我们,见识过不少迷宫小游戏 当然印象深刻的当然是小动物走迷宫 这里有几组挑战走迷宫的小可爱。先来看看吧! (1ÿ…...
springboot整合tio-websocket方案实现简易聊天
写在最前: 常用的http协议是无状态的,且不能主动响应到客户端。最初想实现状态动态跟踪只能用轮询或者其他效率低下的方式,所以引入了websocket协议,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务…...
《TCP IP网络编程》第十三章
第 13 章 多种 I/O 函数 13.1 send & recv 函数 Linux 中的 send & recv: send 函数定义: #include <sys/socket.h> ssize_t send(int sockfd, const void *buf, size_t nbytes, int flags); /* 成功时返回发送的字节数,失败…...
驱动开发 day8 (设备树驱动,按键中断实现led亮灭)
//编译驱动 (注意Makefile的编译到移植到开发板的内核) make archarm //清除编译生成文件 make clean ****************************************** //安装驱动 insmod mycdev.ko //卸载驱动 rmmod mycdev 需要在<内核路径>/arch/arm/boot/dts/ 修改 stm32mp157a-fsm…...
DataX将MySQL数据同步到HDFS中时,空值不处理可以吗
DataX将MySQL数据同步到HDFS中时,空值存到HDFS中时,默认是存储为\N,这样会有两个缺点: 会产生歧义,如果MySQL业务数据中有\N数据,那么存储到HDFS上是\N,null值存储也是\N,当用Hive查…...
P3373 【模板】线段树 2(乘法与加法)(内附封面)
【模板】线段树 2 题目描述 如题,已知一个数列,你需要进行下面三种操作: 将某区间每一个数乘上 x x x;将某区间每一个数加上 x x x;求出某区间每一个数的和。 输入格式 第一行包含三个整数 n , q , m n,q,m n,…...
实现langchain-ChatGLM API调用客户端(及未解决的问题)
langchain-ChatGLM是一个基于本地知识库的LLM对话库。其基于text2vec-large-Chinese为Embedding模型,ChatGLM-6B为对话大模型。原项目地址:https://github.com/chatchat-space/langchain-ChatGLM 对于如何本地部署ChatGLM模型,可以参考我之前…...
【AltWalker】模型驱动:轻松实现自动化测试用例的生成和组织执行
目录 模型驱动的自动化测试 优势 操作步骤 什么是AltWalker? 安装AltWalker 检查是否安装了正确的版本 牛刀小试 创建一个测试项目 运行测试 运行效果 在线模型编辑器 VScode扩展 本地部署 包含登录、选择产品、支付、退出登录的模型编写 模型效果 1…...
大数据课程E3——Flume的Sink
文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Sink的HDFS Sink; ⚪ 掌握Sink的Logger Sink; ⚪ 掌握Sink的File Roll Sink; ⚪ 掌握Sink的Null Sink; ⚪ 掌握Sink的AVRO Sink; ⚪ 掌握Sink的Custom Sink; 一、HDFS Sink …...
如何快速做单元测试?
首先写unit test之前,要确认自己的测试遵循两个原则: 1、尽量不要干涉原来的代码。从阅读代码的体验来说,不要让你的测试(哪怕是一小段if..else...的代码)出现在你准备测试的代码中。 2、代码要只是测试某个class里面…...
不同对象的集合转换
https://blog.csdn.net/qq_42483473/article/details/128984514 import com.alibaba.fastjson.JSON;import java.util.ArrayList; import java.util.List;/*** author */ public class ObjectConversion {/*** 从List<A> copy到List<B>* param list List<B>…...
【机器学习】Gradient Descent
Gradient Descent for Linear Regression 1、梯度下降2、梯度下降算法的实现(1) 计算梯度(2) 梯度下降(3) 梯度下降的cost与迭代次数(4) 预测 3、绘图4、学习率 首先导入所需的库: import math, copy import numpy as np import matplotlib.pyplot as plt plt.styl…...
直播读弹幕机器人:直播弹幕采集+文字转语音(附完整代码)
目录 前言代码实现请求数据解析数据文字转语音完整代码 高级点的tk界面版 前言 直播读弹幕机器人是指能够实时读取直播平台上观众发送的弹幕,并将其转化为语音进行播放的机器人。这种机器人通常会使用文字转语音技术,将接收到的弹幕文本转为语音&#x…...
K3s vs K8s:轻量级对决 - 探索替代方案
在当今云原生应用的领域中,Kubernetes(简称K8s)已经成为了无可争议的领导者。然而,随着应用规模的不断增长,一些开发者和运维人员开始感受到了K8s的重量级特性所带来的挑战。为了解决这一问题,一个名为K3s的…...
像素艺术×AI识别:Ostrakon-VL扫描终端CSS修复实战详解
像素艺术AI识别:Ostrakon-VL扫描终端CSS修复实战详解 1. 项目背景与设计理念 1.1 为什么选择像素艺术风格 在零售和餐饮场景中,传统的工业级UI往往显得冰冷且缺乏亲和力。我们选择8-bit像素艺术风格,主要基于三个考量: 降低技…...
三步快速配置:极简二维码插件让你的浏览器变身智能跨设备助手
三步快速配置:极简二维码插件让你的浏览器变身智能跨设备助手 【免费下载链接】chrome-qrcode chrome-qrcode - 一个 Chrome 浏览器插件,可以生成当前 URL 或选中文本的二维码,或解码网页上的二维码。 项目地址: https://gitcode.com/gh_mi…...
千问3.5-2B网页版深度解析:前端上传逻辑、后端推理链路、JSON返回结构
千问3.5-2B网页版深度解析:前端上传逻辑、后端推理链路、JSON返回结构 1. 平台概述 千问3.5-2B是Qwen系列中的轻量级视觉语言模型,专为图片理解与文本生成任务优化设计。这个开箱即用的解决方案将复杂的AI能力封装成简单的网页交互,用户无需…...
OpenClaw定时任务实战:Qwen3-4B驱动每日资讯摘要生成
OpenClaw定时任务实战:Qwen3-4B驱动每日资讯摘要生成 1. 为什么需要自动化资讯摘要 每天早上打开电脑,我的浏览器标签页总是堆满了十几个未读的科技资讯网站。作为技术从业者,保持行业敏感度很重要,但手动筛选和阅读的效率实在太…...
Lychee Rerank MM实战教程:自定义Instruction提升特定领域重排序效果
Lychee Rerank MM实战教程:自定义Instruction提升特定领域重排序效果 1. 快速了解Lychee Rerank MM Lychee Rerank MM是一个专门解决多模态检索问题的智能系统。想象一下这样的场景:你在电商平台搜索"红色连衣裙",系统返回了几十…...
Qwen3视觉黑板报辅助数据库课程设计:ER图与数据关系可视化
Qwen3视觉黑板报辅助数据库课程设计:ER图与数据关系可视化 你是不是也经历过这样的场景?面对《数据库课程设计》这门课,老师布置了一个“图书管理系统”或者“学生选课系统”的题目,你脑子里有一堆想法,但就是不知道该…...
HP 现在可以零成本构建原生 iOS 和 Android 应用 NativePHP for Mobile v3 发布
插件化架构 v3 版本最大的变化是引入了模块化插件系统。此前版本中集成在核心包里的原生功能,现在被拆分成独立的插件。 每个插件都是一个独立的 Composer 包,包含 Swift 和 Kotlin 代码、权限清单以及原生依赖。开发者只需安装实际用到的插件…...
快捷键失灵?让Hotkey Detective揪出幕后“键盘小偷“——专业级Windows热键冲突解决方案
快捷键失灵?让Hotkey Detective揪出幕后"键盘小偷"——专业级Windows热键冲突解决方案 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_m…...
嵌入式字符LCD进度条库:LcdProgressBar轻量实现
1. 项目概述LcdProgressBar是一个面向嵌入式 LCD 显示场景的轻量级进度条绘制库,专为基于字符型液晶显示屏(Character LCD)的资源受限系统设计。其核心定位并非替代图形 LCD 的矢量渲染能力,而是以极低内存开销和确定性执行时间&a…...
【OpenClaw 安全部署与使用指南:从零构建可信赖的 AI 助手】
OpenClaw 安全部署与使用指南:从零构建可信赖的 AI 助手OpenClaw 作为一款具备"眼和手"的开源 AI Agent 框架,能够读写文件、执行命令、调用工具、访问网络——这些强大的能力在带来便利的同时,也意味着潜在的安全风险。如果部署和…...
