Puoi utilizzare il seguente comando jq da terminale Linux per aggiungere la nuova chiave "join" ai campi esistenti "title" e "description", concatenando i loro valori con due punti ":" quando entrambi i campi sono presenti:
jq '.resources[].schema.fields |= map(if has("title") and has("description") then . + {"join": "\(.title): \(.description)"} elif has("title") then . + {"join": .title} elif has("description") then . + {"join": .description} else . end)' file.json
In questo comando, il file JSON viene passato a jq tramite l'input standard (stdin). Il comando jq seleziona quindi tutti i campi "fields" all'interno di tutti i "resources" e li mappa usando la funzione map(). Dentro la funzione map(), vengono verificate le seguenti condizioni per ogni oggetto campo:
se il campo ha sia "title" che "description", allora viene aggiunta una nuova chiave "join" con il valore concatenato di "title" e "description" separati da due punti ":";
se il campo ha solo "title", allora viene aggiunta una nuova chiave "join" con il valore di "title";
se il campo ha solo "description", allora viene aggiunta una nuova chiave "join" con il valore di "description";
se il campo non ha né "title" né "description", allora viene restituito l'oggetto campo originale senza alcuna modifica.
Il risultato finale viene quindi stampato sulla standard output (stdout).
ChatGPT Solution