保持mysql json查询的字段顺序

时间:2018-12-29 19:19:48

标签: mysql

我有以下mysql json查询:

SELECT json_object(
  'personId',p.id, 
  'personName', p.name,
  'personAge', p.age
) FROM PEOPLE p;

,我注意到json_object并没有按照查询的顺序返回字段,可以更改吗?如果我想要相同的订单,可以这样做吗?

例如:

输出可以是:

{
  "personAge": 35,
  "personId": 12,
  "personName": "john"
}

我希望它始终是:

{
  "personId": 12,
  "personName": "john",
  "personAge": 35
}

1 个答案:

答案 0 :(得分:1)

我认为您无法管理所生成的JSON的键顺序。如果我们参考以下内容:Normalization, Merging, and Autowrapping of JSON Values,我们可以看到对JSON值进行标准化的步骤之一包括下一个逻辑:

  

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

然后,在一段之后,我们可以阅读:

  

产生JSON值的MySQL函数(请参见第12.17.2节“创建JSON值的函数”)始终返回标准化的值。

因此,总而言之,json_object()是一个返回JSON值的函数,该值将被规范化,并且规范化过程的一部分会影响JSON keys的顺序。