来自 MariaDB 网站:
JSON 是 LONGTEXT 的别名,出于兼容性原因而引入 使用 MySQL 的 JSON 数据类型。 MariaDB 将其实现为 LONGTEXT 相反,由于 JSON 数据类型与 SQL 标准相矛盾,并且 MariaDB 的基准测试表明性能至少相当。
解决方案:MariaDB没有JSON,自动将其转换为LONGTEXT
https://dbfiddle.uk/?rdbms=mariadb_10.5&fiddle=e2feaf39e86e2888d441a53bcc5add2b
所以,我在xamp中将mariaDb更改为MySQL。现在我可以设置 Json 数据类型了
如何更改:https://stackoverflow.com/a/58973750/16180226
注意:实际上我正在使用 Node js APi 发送请求。
这里是请求主体:(出于测试目的忽略此字段)
这里的数据是req body
查询:'INSERT INTO table SET ?',数据
{
"name": "Test",
"description": [
{
"hello": "description"
},
{
"hello": "description"
},
{
"hello": "description"
}
],
"monthlySell": {
"hello": "monthlySell"
}
}
}
如果 req body 键具有对象字段,则进行字符串化的代码:
现在我不必担心 stringify,如果一个文件是对象,它会自动 stringyfiy 来存储 Json
const keys = Object.keys(data);
console.log(keys.length)
for (let i=0; i<keys.length; i++)
{
if(typeof data[keys[i]]==='object')
{
console.log(typeof keys[i] +data[keys[i]] )
data[keys[i]]=JSON.stringify(data[keys[i]])
}
}