Como gerar objetos json aninhados usando funções nativas json do mysql?

Usando apenas as funções JSON nativas (sem PHP, etc) no MySQL versão 5.7.12 (seção 13.16 no manual), estou tentando escrever uma consulta para gerar um documento JSON a partir de tabelas relacionais que contêm um subobjeto. Dado o seguinte exemplo:

CREATE TABLE `parent_table` (
   `id` int(11) NOT NULL,
   `desc` varchar(20) NOT NULL,
   PRIMARY KEY (`id`)
);
CREATE TABLE `child_table` (
   `id` int(11) NOT NULL,
   `parent_id` int(11) NOT NULL,
   `desc` varchar(20) NOT NULL,
   PRIMARY KEY (`id`,`parent_id`)
);
insert `parent_table` values (1,'parent row 1');
insert `child_table` values (1,1,'child row 1');
insert `child_table` values (2,1,'child row 2');

Estou tentando gerar um documento JSON que se parece com isso:

[{
    "id" : 1,
    "desc" : "parent row 1",
    "child_objects" : [{
            "id" : 1,
            "parent_id" : 1,
            "desc" : "child row 1"
        }, {
            "id" : 2,
            "parent_id" : 1,
            "desc" : "child row 2"
        }
    ]
}]

Eu sou novo no MySQL e suspeito que exista um padrão SQL para gerar objetos JSON aninhados de um para muitos relacionamentos, mas estou tendo problemas para encontrá-lo.

No Microsoft SQL (com o qual estou mais familiarizado), o seguinte funciona:

select 
 [p].[id]
,[p].[desc]
,(select * from [dbo].[child_table] where [parent_id] = [p].[id] for json auto) AS [child_objects]
from [dbo].[parent_table] [p]
for json path

Tentei escrever o equivalente no MySQL da seguinte maneira:

select json_object(
 'id',p.id 
,'desc',p.`desc`
,'child_objects',(select json_object('id',id,'parent_id',parent_id,'desc',`desc`) 
                  from child_table where parent_id = p.id)
)
from parent_table p;

select json_object(
  'id',p.id 
 ,'desc',p.`desc`
 ,'child_objects',json_array((select json_object('id',id,'parent_id',parent_id,'desc',`desc`) 
                              from child_table where parent_id = p.id))
 )
 from parent_table p

Ambas as tentativas falham com o seguinte erro:

Error Code: 1242. Subquery returns more than 1 row

questionAnswers(1)

yourAnswerToTheQuestion