@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('
driver {
driverId: driver_id
driverName: name
driverPoints: points
teamDetails: team @array {
teamId: team_id
teamName: name
teamPoints: points
}
}
');
The above 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('
driver {
driverId: driver_id
driverName: name
driverPoints: points
teamDetails: team
[
{
teamId: team_id
teamName: name
teamPoints: points
}
]
}
');