我有以下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
}
答案 0 :(得分:1)
我认为您无法管理所生成的JSON
的键顺序。如果我们参考以下内容:Normalization, Merging, and Autowrapping of JSON Values,我们可以看到对JSON
值进行标准化的步骤之一包括下一个逻辑:
为了使查找更有效率,它还会对JSON对象的键进行排序。您应该注意,此排序的结果可能会更改,并且不能保证在各个发行版中都保持一致。
然后,在一段之后,我们可以阅读:
产生JSON值的MySQL函数(请参见第12.17.2节“创建JSON值的函数”)始终返回标准化的值。
因此,总而言之,json_object()
是一个返回JSON
值的函数,该值将被规范化,并且规范化过程的一部分会影响JSON keys
的顺序。