保存后,MYSQL JSON列更改数组顺序

Rah*_*ich 3 mysql json mysql-json

我在MySQL数据库表中使用JSON列类型。当我尝试在表列中保存JSON值时,JSON数组会自动重新排序(随机播放)

我有以下JSON:

{"TIMER_HEADER": [{"XX!TIMERHDR": "XXTIMERHDR", "VER": " 7", "REL": " 0", "COMPANYNAME": "XXX", "IMPORTEDBEFORE": "N", "FROMTIMER": "N", "COMPANYCREATETIME": "12423426"}, {"XX!HDR": "XXHDR", "PROD": "Qics for Wnows", "VER": "Version 6.0", "REL": "Release R", "IIFVER": "1", "DATE": "2018-01-20", "TIME": "1516520267",   "ACCNTNT": "N", "ACCNTNTSPLITTIME": "0"}], "COLUMN_HEADER": ["!TIMEACT", "DATE", "JOB", "EMP", "ITEM", "PITEM", "DURATION", "PROJ", "NOTE", "BILLINGSTATUS"]}
Run Code Online (Sandbox Code Playgroud)

保存在MySql表的JSON列中后,将变为:

{"TIMER_HEADER": [{"REL": " 0", "VER": " 7", "FROMTIMER": "N", "COMPANYNAME": "XXX", "XX!TIMERHDR": "XXTIMERHDR", "IMPORTEDBEFORE": "N", "COMPANYCREATETIME": "12423426"}, {"REL": "Release R", "VER": "Version 6.0", "DATE": "2018-01-20", "PROD": "Qics for Wnows", "TIME": "1516520267", "IIFVER": "1", "XX!HDR": "XXHDR", "ACCNTNT": "N", "ACCNTNTSPLITTIME": "0"}], "COLUMN_HEADER": ["!TIMEACT", "DATE", "JOB", "EMP", "ITEM", "PITEM", "DURATION", "PROJ", "NOTE", "BILLINGSTATUS"]}
Run Code Online (Sandbox Code Playgroud)

我需要与原始订单相同的订单,因为在第三方进行了验证。

请帮忙。谢谢。

kik*_*s73 5

MySQL 手册说:

为了使查找更有效率,它还会对JSON对象的键进行排序。您应注意,此排序的结果可能会更改,并且不能保证在各个发行版之间保持一致。

没有标准说必须按一定顺序进行,因此最好的办法是与第三方的某人交谈以调整验证。

  • 该死的,我对使用这种新的列类型感到非常兴奋,但现在我知道密钥对值可能会改变顺序,它对我当前的需求毫无用处。 (3认同)
  • 我同意Martin的观点,这完全打破了很多用例。特别是与LIKE比较。 (2认同)
  • 您可以将列的类型更改为 TEXT 并仍然获得 JSON 解析的能力,此外,在这种情况下,mysql 不会更改顺序。 (2认同)