À l'aide de jq ou alternative outils de ligne de commande pour comparer des fichiers JSON

Existe-il des utilitaires de ligne de commande qui peut être utilisé pour savoir si deux fichiers JSON sont identiques à celles de l'invariance dans le dictionnaire-clés et à l'intérieur de la liste d'élément de commande?

Cela pourrait-il être fait avec jq ou de quelque autre outil équivalent?

Exemples:

Ces deux fichiers JSON sont identiques

A:

{
  "People": ["John", "Bryan"],
  "City": "Boston",
  "State": "MA"
}

B:

{
  "People": ["Bryan", "John"],
  "State": "MA",
  "City": "Boston"
}

mais ces deux fichiers JSON sont différentes:

A:

{
  "People": ["John", "Bryan", "Carla"],
  "City": "Boston",
  "State": "MA"
}

C:

{
  "People": ["Bryan", "John"],
  "State": "MA",
  "City": "Boston"
}

Qui serait:

$ some_diff_command A.json B.json

$ some_diff_command A.json C.json
The files are not structurally identical
  • Fichier A et fichier B ne sont pas identiques. Vous interpréter la valeur de la clé People comme un ensemble, mais c'est une liste et l'ordre de la liste ne peut pas, en général, être considéré négligeable. Changement People à Winners_by_ranking, et il devient immédiatement louche de prétendre que les fichiers sont identiques.