jq: elegir nulo en vez de vacío
He creado esta expresión de filtro:
def pick_extension($url):
.extension[] | select( .url == $url);
[
( pick_extension( "http://hl7.org/fhir/StructureDefinition/patient-nationality" ) | .url, ( .extension[0] | .url, ( .valueCodeableConcept.coding[0] | .system, .code ) ) )
]
El problema es que cuando pick_extension(url)
no selecciona ningún objeto, devuelve vacío.
Entonces otras expresiones encadenadas también son vacías.
Actualmente, estoy recibiendo matrices vacías:
[]
[]
[]
La salida deseada que necesito sería:
[null, null, null, null]
[null, null, null, null]
[null, null, null, null]
...
Actualmente, estoy trabajando con esto en esta página web: jqplay
.
Aquí hay un objeto JSON extraído del objeto de entrada:
{
"resourceType":"Patient",
"id":"14426955",
"meta":{
"versionId":"1",
"lastUpdated":"2021-12-01T14:24:11.387+01:00",
"source":"#XbZyfGxZj4fZygTv"
},
"extension":[
{
"url":"http://hl7.org/fhir/StructureDefinition/patient-nationality",
"extension":[
{
"url":"code",
"valueCodeableConcept":{
"coding":[
{
"system":"urn:iso:std:iso:3166",
"code":"724"
}
]
}
}
]
},
{
"url":"http://catsalut.gencat.cat/fhir/StructureDefinition/patient-status",
"valueCodeableConcept":{
"coding":[
{
"system":"http://catsalut.gencat.cat/fhir/EstatRegistre",
"code":"alta"
}
]
}
}
]
}
davy.ai
Para lograr la salida deseada de tener valores nulos en los arreglos vacíos, podemos modificar la expresión de filtro de la siguiente manera:
En esta expresión modificada, usamos la función
map
para verificar si la longitud de cada arreglo es 0 (es decir, el arreglo está vacío). Si la longitud es 0, reemplazamos el arreglo con un arreglo de cuatro valores nulos. De lo contrario, mantenemos el arreglo original tal cual.La expresión de filtro modificada debería dar la salida deseada de tener arreglos con valores nulos en lugar de arreglos vacíos.