MySQL的字符转义

表象

表结构如下:

其中 content 字段存放json之后的数据,这个json数据里面 extra 字段的内容又是一段json,如下:

复制代码
INSERT INTO `future`.`test_escape_character`

( `id`, `title`, `content`, `is_del` )

VALUES
 ( 2, 
 '我的博客',
    '{"web_id":31415,"name":"清澄秋爽","extra":"{\"url\":\"https://dashen.tech\",\"web_icon\":\"https://dashen.tech/favicon.ico\",\"desc\":\"苹果树下思索者\"}","online":1}',
 1 );

写入之后,复制 content 字段,发现extra 无法解析了

而将 content 字段{"web_id":31415,"name":"清澄秋爽","extra":"{\"url\":\"https://dashen.tech\",\"web_icon\":\"https://dashen.tech/favicon.ico\",\"desc\":\"苹果树下思索者\"}","online":1}直接在navicat中写入, 则可成功解析.

对比发现,能成功解析的extra,多了\.(这是json中的json必须要有的,起转义"的作用)

但为何insert进去的数据,就少了这个\?

即我们想要保存的是{"web_id":31415,"name":"清澄秋爽","extra":"{\"url\":\"https://dashen.tech\",\"web_icon\":\"https://dashen.tech/favicon.ico\",\"desc\":\"苹果树下思索者\"}","online":1}, insert写进去之后,却成了

{"web_id":31415,"name":"清澄秋爽","extra":"{"url":"https://dashen.tech","web_icon":"https://dashen.tech/favicon.ico","desc":"苹果树下思索者"}","online":1}

原由

这个问题是因为 MySQL的字符串转义 导致.

MySQL中,特殊字符用 反斜线('\')开始, 从而导致**"url"** 被转义为"url",进而使保存的数据json解析失败.

解决

解决办法也非常简单,将用在转义起始的\也进行转义即可.

MySQL用\\来转义 反斜线('\')字符,即在insert时,将 content 字段改为:

复制代码
'{"web_id":31415,"name":"清澄秋爽","extra":"{\\"url\\":\\"https://dashen.tech\\",\\"web_icon\\":\\"https://dashen.tech/favicon.ico\\",\\"desc\\":\\"苹果树下思索者\\"}","online":1}'

这样写入的数据,就符合预期了~


更多MySQL的转义字符,可参考

MySql字符转义

MySQL中执行sql语句反斜杠需要进行转义否则会被吃掉

本文由mdnice多平台发布

相关推荐
金銀銅鐵17 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
念何架构之路17 小时前
go-grpc设计思想
开发语言·后端·golang
system_error_x18 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
步行cgn19 小时前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc
码事漫谈20 小时前
AI 读你的提示词,其实很没耐心
后端
用户83562907805121 小时前
如何使用 Python 格式化 Excel 单元格中的长文本
后端·python
我命由我1234521 小时前
Python 开发 - Python 的 pathlib
java·开发语言·后端·python·学习·java-ee·学习方法
IT_陈寒21 小时前
Java性能优化完全指南
前端·人工智能·后端
电子IT笔记21 小时前
对接群晖NAS,上传和删除踩坑记录
前端·后端
Mk5987821 小时前
P4:把 Agent 的记忆搬进 Redis —— AgentScope-Java 工程化实战
后端