【问题标题】:Prevent Json ordering while inserting into Mysql table插入 Mysql 表时防止 Json 排序
【发布时间】:2020-08-14 12:49:40
【问题描述】:

在发送 AJAX 请求时,Json-Content 的重新排序已经是一个已知问题,但我不知道在将 Json-content 插入 JSON 类型的 Mysql 表时也会发生同样的情况。

在这种情况下,mysql 服务器也会在保存之前对其内容进行排序。

之前:

{"c":3, "b":2, "a":1}

之后:

{"a":1, "b":2, "c":3}

假设我想出于某种目的阻止这种排序......是否有可能在不调整 Json 数据本身的情况下禁用排序?

【问题讨论】:

  • json 排序是什么意思?请提供一些您所看到的示例。
  • JSON 数据类型以某种内部格式存储,因此反向重构可能会对其组件进行重新排序。避免这种情况的唯一方法是将 JSON 存储在字符串类型的字段中。
  • @Akina,将 json 存储在字符串中不是我们的选择,因为我们正在使用 mysql json 函数来查询数据。
  • 请看这个问题,我觉得和你的问题一样stackoverflow.com/questions/48382457/…
  • 尽管如此 - 字符串数据类型和存储顺序(除了数组元素的位置顺序之外没有任何意义)或 JSON 数据类型和可能的重新排序。 我们正在使用 mysql json 函数来查询数据。 如果 JSON 函数是有效的 JSON 值,则 JSON 函数可以轻松接受字符串数据类型参数。

标签: mysql json


【解决方案1】:

关键是序列化>然后存储>检索>然后解析

例如: 首先将对象存储为字符串

var jsonDataStringed = JSON.stringify(myJsonData);
INSERT INTO MY_TABLE(id,jsonDataStringed);

然后检索字符串并将其更改回对象

db.sequelize.query(`SELECT * FROM MY_TABLE`);
var myJsonData = JSON.parse(db[0])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 2012-02-06
    • 1970-01-01
    相关资源
    最近更新 更多