Mysql插入JSON串会被去一层转义

2023-05-16

Mysql插入JSON串会被去一层转义

问题描述

背景:在数据库更新、新增一个字段为JSON串的时候,被去一层转义,导致程序解析失败,报错

原JSON串

[
    {
        "rules": [
            {
                "ruleType": 1,
                "value": "1458",
                "rate": 90
            },
            {
                "ruleType": 3,
                "value": "{\"begin\":\"测试欢迎语\",\"end\":\"测试结束语\",\"template\":[\"6962def-sadfa\"],\"title\":\"标题\"}",
                "rate": 10
            }
        ],
        "tag": 1,
        "sort": 2,
        "ruleName": "分流默认路由"
    },
    {
        "rules": [
            {
                "ruleType": 1,
                "value": "1533",
                "rate": ""
            }
        ],
        "labelCode": "red_user",
        "sort": 1,
        "tag": 2,
        "ruleName": "标签路由"
    }
]

先对JSON压缩

[{"rules": [{"ruleType": 1,"value": "1458","rate": 90},{"ruleType": 3,"value": "{\"begin\":\"测试欢迎语\",\"end\":\"测试结束语\",\"template\":[\"6962def-sadfa\"],\"title\":\"标题\"}","rate": 10}],"tag": 1,"sort": 2,"ruleName": "分流默认路由"},{"rules": [{"ruleType": 1,"value": "1533","rate": ""}],"labelCode": "red_user","sort": 1,"tag": 2,"ruleName": "标签路由"}]

然后就直接

update `shuidi_cs_biz`.`session_sub_route_rule` set rules = '[{"rules": [{"ruleType": 1,"value": "1458","rate": 90},{"ruleType": 3,"value": "{\"begin\":\"测试欢迎语\",\"end\":\"测试结束语\",\"template\":[\"6962def-sadfa\"],\"title\":\"标题\"}","rate": 10}],"tag": 1,"sort": 2,"ruleName": "分流默认路由"},{"rules": [{"ruleType": 1,"value": "1533","rate": ""}],"labelCode": "red_user","sort": 1,"tag": 2,"ruleName": "标签路由"}]' where id = 1;

update 或者 insert 都行, 然后查下更新后的

[
{
    "rules": [
    {
        "ruleType": 1,
        "value": "1458",
        "rate": 90
    },
    {
      //注意这部分,解析出现问题了
        "ruleType": 3,
        "value": "{"
        begin ":"
        测试欢迎语 ","
        end ":"
        测试结束语 ","
        template ":["
        6962 def - sadfa "],"
        title ":"
        标题 "}",
        "rate": 10
    }],
    "tag": 1,
    "sort": 2,
    "ruleName": "分流默认路由"
},
{
    "rules": [
    {
        "ruleType": 1,
        "value": "1533",
        "rate": ""
    }],
    "labelCode": "red_user",
    "sort": 1,
    "tag": 2,
    "ruleName": "标签路由"
}]

然后GG了,线上出问题了。

注意

这种问题出现在**,JSON字符串字段,包含一个转义字符串的情况**,如图

image-20220415110757838

这里,

解决的办法

第一种: 在压缩字符串后,进行一次转义

[{\"rules\": [{\"ruleType\": 1,\"value\": \"1458\",\"rate\": 90},{\"ruleType\": 3,\"value\": \"{\\\"begin\\\":\\\"测试欢迎语\\\",\\\"end\\\":\\\"测试结束语\\\",\\\"template\\\":[\\\"6962def-sadfa\\\"],\\\"title\\\":\\\"标题\\\"}\",\"rate\": 10}],\"tag\": 1,\"sort\": 2,\"ruleName\": \"分流默认路由\"},{\"rules\": [{\"ruleType\": 1,\"value\": \"1533\",\"rate\": \"\"}],\"labelCode\": \"red_user\",\"sort\": 1,\"tag\": 2,\"ruleName\": \"标签路由\"}]

然后新增,修改就都可以

第二种

有第一种,必然有第二种,哈哈哈

1、我用的navicat,直接在工具上,copy as insert statement

image-20220415111120449

2、 然后发现,人家的格式就是转义后的,参考这个维护就行

insert into `shuidi_cs_biz`.`session_sub_route_rule` ( `sub_route_name`, `channel_id`, `rules`, `status`, `is_delete`, `create_time`, `update_time`) values ( '路由', '7', '[{\"rules\": [{\"ruleType\": 1,\"value\": \"1458\",\"rate\": 90},{\"ruleType\": 3,\"value\": \"{\"begin\":\"测试欢迎语\",\"end\":\"测试结束语\",\"template\":[\"6962def-sadfa\"],\"title\":\"标题\"}\",\"rate\": 10}],\"tag\": 1,\"sort\": 2,\"ruleName\": \"分流默认路由\"},{\"rules\": [{\"ruleType\": 1,\"value\": \"1533\",\"rate\": \"\"}],\"labelCode\": \"red_user\",\"sort\": 1,\"tag\": 2,\"ruleName\": \"标签路由\"}]', '1', '1', '2021-07-26 10:25:02', '2022-04-15 11:05:46');

这个问题采坑线上两次了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql插入JSON串会被去一层转义 的相关文章

  • ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

    通过 extern 属性文件 url 指定如下 jdbc mariadb xxxxx 3306 xxxxx zeroDateTimeBehavior convertToNull 连接工作正常并且能够查询数据库 通过休眠 我创建了一个映射到带
  • 重复键错误不会取消/回滚mysql事务

    当在 mysql innodb 事务中时 我希望重复的键错误会导致回滚 它没有 相反 它只是抛出一个错误并继续执行下一个命令 一旦到达 COMMIT 命令 事务将被提交 没有重复键导致命令 这是预期的行为吗 如果是这样 如何设置它以便在发生
  • MySQL LAST_INSERT_ID() 和 FOUND_ROWS()

    当 PHP 脚本每秒有数百个查询时会发生什么 它会影响这些函数吗 是否保证它们会返回当前脚本中最后一个插入语句中最后插入的 id 它会返回当前脚本中最后一次选择的行数吗 如果同时从另一个脚本进行新的插入或选择 在 FOUND ROWS 的情
  • Vue: vue-i18n: 无法翻译 keypath 的值,使用 keypath 的值作为默认值

    我正在使用 Vue 我想展示三种语言 英语 他加禄语和宿务语 现在我有错误 无法转换键路径 NavbarMobile home 的值 使用 keypath 的值作为默认值 我通过 console log this i18n locale 检
  • 如何获取 JDBC 中 UPDATE 查询影响的所有行?

    我有一项任务需要使用更新记录PreparedStatement 一旦记录被更新 我们知道更新查询返回计数 即受影响的行数 但是 我想要的不是计数 而是受更新查询影响的行作为响应 或者至少是受影响的行的 id 值列表 这是我的更新查询 UPD
  • android中如何将字符串转换为unicode

    我正在解析一些unicodes from json to my android应用程序 API 给出unicodes像这样的图标 ue600 当我将这个unicode直接添加到textview like textview setText u
  • MySQL 查询中的窗口函数

    有没有办法在 SELECT 查询本身中动态地使用 MySQL 查询中的窗口函数 我知道在 PostgreSQL 中这是可能的 例如 下面是 PostgreSQL 中的等效查询 SELECT c server ip c client ip s
  • Web API 2.0 使用 pascalcase 模型接收驼峰式命名的 JSON 数据

    我正在尝试对我的 Web API 进行 PUT 调用 我在 WebApiConfig cs 中设置了以下内容 以处理以驼峰形式将数据发送回我的 Web 项目 config Formatters JsonFormatter Serialize
  • mysql 中 INSERT 语句的计算列

    假设我想要一个表来记录其他表中的日期和列数 或者任何类型的数学 字符串连接等 CREATE TABLE log id INTEGER NOT NULL AUTO INCREMENT date DATETIME NOT NULL count
  • 级联删除时触发调用

    我在 MySQL 中有表 A 它有一些对其他表 B C D 的级联删除的引用 当从 A 中删除某些内容时 我需要使用触发器 当我直接从 A 删除记录时 此触发器起作用 但它不适用于级联删除 是否存在任何版本的 MySQL 可以让我的触发器与
  • 通过 PDO 将双精度数插入 MySQL 时精度损失

    我遇到了这种非常烦人的行为 我想知道我是否做错了什么 或者这是否是故意的 如果是的话 为什么 每当我在 php 5 3 中有一个 double 类型的变量 并且想将其插入到数据库 MYSQL 5 0 的 double 类型字段中时 该值总是
  • 关于 Cassandra 与 MySQL 的一些建议

    几天前我在这里问了一个问题 得到了一些非常好的答案 我正在考虑做一个带有个人资料 个人简介等的facebook风格的网站 并询问我是否应该使用mysql 答案是使用Cassandra 因为好多了 我只是问这是每个人都会建议的 只是我对mys
  • 使用 Rails 中的 postgres json 字段更新嵌套键

    我一直在尝试更新以下内容 boxes book 2 moving 2 goods to boxes book new 2 moving 2 goods 无需使用正则表达式或在 ruby 中执行此操作 但似乎有点棘手 我想添加新密钥 然后删除
  • Apache Camel 的 JsonMappingException

    我在骆驼路线上遇到以下异常 Caused by com fasterxml jackson databind JsonMappingException No serializer found for class org apache cam
  • 如何限制两个表之间一对多关系中的多个数量?

    我有一个带有两个 MySql 表的 MySQL 数据库 第一个是第一个表 表 A 有一列具有唯一值 从值 从 1 到 n 在第二个表 2 表 B 中 我有两列 在第一个表中我有一个名称 在第二个我的值从 1 到 n 如果我在 中添加一个值
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • 后退按钮 (Chrome) 在 Play Framework 中获取 Json 而不是 HTML

    各位 我有一个 Web 应用程序 我在其中对同一资源的 JSON 和 HTML 表示重复使用了相同的路由 现在我们将其称为 foo details 该页面是从 bar details 链接的 因此 查看 bar details 您会看到链接
  • 由于 json 字符串化 dict 键导致数据丢失

    考虑下面的例子 gt gt gt import json gt gt gt d 0 potato 0 spud gt gt gt json dumps d 0 potato 0 spud gt gt gt json loads json d
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的
  • 如何获取所有mysql元组结果并转换为json

    我能够从表中获取单个数据 但是当我试图获取表上的所有数据时 我只得到一行 cnn execute sql rows cnn fetchall column t 0 for t in cnn description for row in ro

随机推荐

  • antd 时间类组件的国际化 locale 设置不生效 解决方案汇总

    antd 时间类组件的国际化 locale 设置不生效 xff0c 踩坑之路和解决办法 问题 如图所示 xff0c antd 时间类组件中英文混合显示 xff1a 初始配置代码如下 xff1a span class token keywor
  • 【CCF 201809-3】元素选择器

    思路 处理每一行 xff1a 每一行都处理为一个结构体 xff0c 包含3个属性 xff1a 级别 xff08 rank xff09 元素名称 xff08 element xff09 id名称 级别 61 点的数量 2 元素名称 amp i
  • 无需上架,接入穿山甲广告和广点通广告 sdk

    我们都知道广告是商业流量变现最重要的方式之一 xff0c 所以基本所有的游戏或者app都会接入广告sdk 而我们都知道穿山甲广告sdk和广点通广告sdk是国内收益相对比较高的 xff0c 但是想接入穿山甲广告sdk 你的游戏或者app必须上
  • JavaScript基础之缓存机制:HTML5离线缓存

    浏览器的缓存机制 xff0c 多种多样 xff0c 离线缓存是其中之一 xff0c 这也是为了更好的用户体验 xff0c 性能优化的重要一步 我们来讲讲这个离线缓存 什么是HTML5离线缓存 xff1f 离线缓存 xff08 Applica
  • IDEA 调试部署 Web-INF/classes下面不生成class文件

    IDEA 调试部署 WEB INF classes下面不生成class文件 原因 xff1a 编译版本 1 8 或者其他版本 xff0c 没有设置 异常 xff1a at javax management remote rmi RMICon
  • Macbook 终端Terminal下如何查看文件生成日期和修改日期

    有时候在用vim命令修改配置文件时 xff0c 不确定是否被修改 xff0c 为了与旧版本比较 xff0c 最好查一下文件生成和修改日期 xff0c 方法如下 xff1a span class pln style margin 0px pa
  • 仿微信地图定位列表

    gitbub源代码链接 xff1a https github com MinLee6 LMMapLocationList 首先按照百度配置要求配置开发环境 1 在AppDelegate mm中设置百度定位的key BOOL applicat
  • FreeBSD zfs安装bhyve跑虚拟机

    FreeBSD zfs文件系统下跑bhyve虚拟机 xff0c 使用简单且稳定高效 xff0c 今天新装一个n3450的小主机 xff08 省电 xff09 xff0c 此简单记录下vm bhyve工具的使用 1 安装 a xff0c 更改
  • vmware下unbuntu虚拟机网络启动后过几分掉线原因

    我vmware用的是17 01 build 21139696版本 xff0c ubuntu使用的是16 lts版本 xff0c 总是开机或挂起恢复后过一段时间网络就掉线 xff0c 但网络的上下两个箭头符号却是正常的 xff0c 并未显示掉
  • 联想 ubuntu14.04无线网卡被禁用的解决办法

    新人在学习Linux时 xff0c 一般会选择安装ubuntu系统 xff0c 但是很多笔记本都会出现安装系统后无限网卡被禁用的问题 xff0c 这种情况的原因我认为并不是无线网卡的驱动没有安装 xff0c 而是ubuntu系统驱动的某个地
  • 序列切片

    序列切片 切片 切片就是指对操作对象 截取 其中一部分的操作 字符串 列表 元祖 有序序列 都支持切片操作 基本语法 顾头不顾尾 序列名称 span class token punctuation span 开始位置下标 span clas
  • 阿里云领取免费2H2G云服务器&证书分享(一):Apsara Clouder云计算专项技能认证:云服务器ECS入门

    这个证书是你领服务器一个月内要考的 xff0c 内容也不难 新老用户都能领 xff0c 要求是有学生认证 当然这个证书是独立的 xff0c 你也可以不认证直接考 点击这个链接 阿里云飞天计划 跳转到阿里云飞天计划 领的服务器如果想不到要做什
  • 卷积神经网络的旋转不变性理解

    卷积神经网络本身的设计对旋转不变性没有进行专门的考虑 xff0c 只不过max pooling可以稍微补偿一下这个功能 xff0c 只是角度变化太大 xff0c 可能会作用不大 xff0c 但因为max pooling并不是为此而设计的 x
  • VS code + Win10 Linux子系统(Ubuntu)开发ESP32

    Windows开发ESP32 最近在研究EPS32 xff0c 但是和STM32之类的单片机不同 xff0c 国内资料大多是在arduino上的简单修改 xff0c 想开发底层硬件比较困难 xff1b 而官方提供的eclipse集成环境体积
  • malloc和calloc的区别

    malloc和calloc的区别有两点 xff1a 两个函数的参数不一样 malloc只有1个参数 xff0c 而calloc有两个参数内存分配后初始化不一样 calloc会把分配的内存全部初始化为0 xff0c 而malloc没有初始化操
  • ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

    欢迎关注大数据和人工智能技术文章发布的微信公众号 xff1a 清研学堂 xff0c 在这里你可以学到夜白 xff08 作者笔名 xff09 精心整理的笔记 xff0c 让我们每天进步一点点 xff0c 让优秀成为一种习惯 xff01 有时候
  • CSDN完整导出pdf博客内容,去除冗余,仅保留blog

    本文完全参考自其它博客 xff1a 新CSDN文章转成PDF 打印 去空白 IT说的博客 CSDN博客 如何将CSDN的文章导出为pdf xff1f 我的blog屋 CSDN博客 csdn导出pdf 原博客代码执行后还保留了博客作者栏 xf
  • WSL2连接调用USB设备

    声明 xff1a 本文教程来源于微软官网WSL教程 xff0c 链接地址 xff1a Connect USB devices 最近在学OpenCV xff0c 发现微软的WSL是个好东西 xff0c 结合VS Code编辑器 xff0c 无
  • 树莓派使用code-server遇到的问题

    code server在树莓派上使用是没有问题的 xff0c 只要保证树莓派系统较新 xff0c 一般不会遇到什么问题 1 以下一系列出现的问题 xff0c 都与系统环境比较旧有关 xff1a code进程一直100 占用CPU浏览器建立V
  • Mysql插入JSON串会被去一层转义

    Mysql插入JSON串会被去一层转义 问题描述 背景 xff1a 在数据库更新 新增一个字段为JSON串的时候 xff0c 被去一层转义 xff0c 导致程序解析失败 xff0c 报错 原JSON串 span class token pu