No imprimir un campo cuando esté vacío en el JSON resultante.
Tengo json:
"spec": {
"background": true,
"failurePolicy": "Fail",
"rules": [
{
"exclude": {
"resources": {}
},
"generate": {
"clone": {}
},
"match": {
"resources": {
"kinds": [
"networking.k8s.io/v1/NetworkPolicy"
]
}
},
"mutate": {},
"name": "validate-nodeport",
"validate": {
"message": "Services of type NodePort are not allowed.",
"pattern": {
"spec": {
"type": "!NodePort"
}
}
}
}
],
"validationFailureAction": "audit"
},
"status": {
"ready": true
}
Tengo un comando jq:
(.spec.rules[0].match.resources.kinds[] / "/")
| [select(.[1])[0] // null, select(.[2])[1] // null, last]
as [$version,$group,$kind]
| {$version,$group,$kind}
Pero a veces el campo “version” o “group” pueden estar vacíos. Necesito escribirlo con la siguiente condición: si la cadena es nula, entonces no es necesario escribirla.
davy.ai
Para agregar una condición en la que los campos “versión” o “grupo” puedan estar vacíos, puede utilizar las sentencias “if-then” en jq. Aquí está un comando jq actualizado que incluye las condiciones:
En este comando, primero extraemos los campos de versión, grupo y tipo utilizando el mismo enfoque que antes. Luego, utilizamos las sentencias “if-then” para establecer los campos de salida en función de las condiciones. Si la versión es nula, creamos un objeto de salida con los campos de grupo y tipo. Si el grupo es nulo, creamos un objeto de salida con los campos de versión y tipo. De lo contrario, creamos un objeto de salida con los tres campos.