@ARRAY Directive
The @array directive can be used to explicitly shape the nested object as an array.
The directive @array takes no arguments.
SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
query {
driver {
driverId: driver_id
driverName: name
driverPoints: points
teamDetails: team @array {
teamId: team_id
teamName: name
teamPoints: points
}
}
}
');
The preceding example explicitly defines that the fields teamID, teamName and teamPoints must be part of an array in the output:
DATA
--------------------------------------------------------------------------------
{
"driverId" : 101,
"driverName" : "Lando Norris",
"driverPoints" : 282,
"teamDetails" :
[
{
"teamId" : 301,
"teamName" : "McLaren Mercedes",
"teamPoints" : 666
}
]
}
{
"driverId" : 102,
"driverName" : "Oscar Piastri",
"driverPoints" : 384,
"teamDetails" :
[
{
"teamId" : 301,
"teamName" : "McLaren Mercedes",
"teamPoints" : 666
}
]
}
.................................
.................................
20 rows selected.
As an alternative to @array directive, you can also use square brackets to enclose the fields which must be part of an array. So the following example would still produce the same output as using the @array directive:
SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
query {
driver {
driverId: driver_id
driverName: name
driverPoints: points
teamDetails: team
[
{
teamId: team_id
teamName: name
teamPoints: points
}
]
}
}
');