使用Mysql中的json类型踩坑:
在查询有json类型的字段时使用java中的String类型进行接受,出现了中文乱码问题。
如何去解决:
1.确保当前保存和查询都是使用的utf-8格式
2.当前项目使用的mysql的驱动(mysql-connector-java)是 5.1.40 以下,去升级当前项目使用mysql的驱动至5.1.40 或者以上。
3.使用mysql提供的函数进行查询(建议json类型操作使用mysql官网提供函数)
以上方式基本可以解决中文乱码问题
随后去学习了一下关于mysql的json类型
关于MySQL的JSON类型
json类型是在5.7这个版本才引入的类型。接下来我们看看mysql针对json类型所支持的函数。
以下是mysql官网文档翻译表格:
https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html
| 名称 | 描述 |
|---|---|
-> | 评估路径后从JSON列返回值;等效于JSON_EXTRACT()。 |
->>(介绍5.7.13) | 评估路径并取消引用结果后,从JSON列返回值;等效于JSON_UNQUOTE(JSON_EXTRACT())。 |
JSON_APPEND()(已弃用) | 将数据附加到JSON文档 |
JSON_ARRAY() | 创建JSON数组 |
JSON_ARRAY_APPEND() | 将数据附加到JSON文档 |
JSON_ARRAY_INSERT() | 插入JSON数组 |
JSON_CONTAINS() | JSON文档是否在路径中包含特定对象 |
JSON_CONTAINS_PATH() | JSON文档是否在路径中包含任何数据 |
JSON_DEPTH() | JSON文档的最大深度 |
JSON_EXTRACT() | 从JSON文档返回数据 |
JSON_INSERT() | 将数据插入JSON文档 |
JSON_KEYS() | JSON文档中的键数组 |
JSON_LENGTH() | JSON文档中的元素数 |
JSON_MERGE()(不建议使用5.7.22) | 合并JSON文档,保留重复的键。JSON_MERGE_PRESERVE()的已弃用同义词 |
JSON_MERGE_PATCH()(介绍5.7.22) | 合并JSON文档,替换重复键的值 |
JSON_MERGE_PRESERVE()(介绍5.7.22) | 合并JSON文档,保留重复的键 |
JSON_OBJECT() | 创建JSON对象 |
JSON_PRETTY()(介绍5.7.22) | 以易于阅读的格式打印JSON文档 |
JSON_QUOTE() | 引用JSON文档 |
JSON_REMOVE() | 从JSON文档中删除数据 |
JSON_REPLACE() | 替换JSON文档中的值 |
JSON_SEARCH() | JSON文档中值的路径 |
JSON_SET() | 将数据插入JSON文档 |
JSON_STORAGE_SIZE()(介绍5.7.22) | 用于存储JSON文档的二进制表示的空间 |
JSON_TYPE() | JSON值类型 |
JSON_UNQUOTE() | 取消引用JSON值 |
JSON_VALID() | JSON值是否有效 |
具体函数使用规则大家可以通过上面的官网去细致了解。
提醒:
JSON列存储的数据要么是NULL,要么必须是JSON格式数据,否则会报错。
JSON数据类型是没有默认值的(声明时"DEFAULT NULL")
文章转载自Code旅途,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




