web-dev-qa-db-fra.com

Validateur JSON dans Ubuntu 16.04

J'ai essayé de mettre la main sur certains validateurs de fichiers JSON. Je suis tombé sur jq. Mais après avoir lancé 'jq . file.json', j'ai obtenu une sortie au format JSON. Cette commande ne m'a pas donné la validation de JSON dans mon fichier.
Je veux savoir comment vérifier la syntaxe ou valider le format JSON dans mon fichier Ubuntu. Conseillez-moi, s'il-vous-plaît.

6
Jaffer Wilson

Essayez jsonlintname__:

Sudo apt install jsonlint

La syntaxe d'utilisation de base est

jsonlint YOUR-FILE.JSON

Vous trouvez son manuel en tapant man jsonlint ou en visitant sa page de manuel en ligne :

Un extrait:

NAME
       jsonlint - A JSON syntax validator and formatter tool

SYNOPSIS
       jsonlint [-v][-s|-S][-f|-F][-ecodec]inputfile.json...

[...]

OPTIONS
       The  return  status  will  be  0 if the file is legal JSON, or non-zero
       otherwise.  Use -v to see the warning details.

       [...]

       -v, --verbose
              Show details of lint checking
       -s, --strict
              Be strict in what is considered legal JSON (the default)
       -S, --nonstrict
              Be loose in what is considered legal JSON
       -f, --format
              Reformat the JSON (if legal) to stdout

[...]

Ainsi, vous pouvez voir si votre JSON est valide en vérifiant le code de retour jsonlintname__. Vous pouvez le voir en exécutant echo $? tout de suite (0 = OK, 1 = non valide) ou en l'évaluant avec &&, || ou ifname__.

5
Byte Commander

jqva cracher l'erreur explicitement, et vous pouvez également vérifier l'état de sortie, qui est 1 pour les erreurs d'analyse, et évidemment 0 pour les réussites.

Par exemple:

% jq '.' <<<'{"foo": "spam", "bar": 1}'
{
  "bar": 1,
  "foo": "spam"
}

% echo $?
0

Maintenant, remplaçons : par = après "bar"--, ce qui rendrait la saisie non valide jsonname__:

% jq '.' <<<'{"foo": "spam", "bar"= 1}'
parse error: Invalid numeric literal at line 1, column 23

% echo $?                                  
1
2
heemayl

Vous pouvez le faire en utilisant le module python json.tool

echo '{"name": "dedunu", "country": "LKA"}' | python -m json.tool

Si vous avez un fichier, vous pouvez l’utiliser comme ci-dessous.

python -m json.tool file.json

Mais le problème avec cette commande est que vous n'obtiendrez pas de détails sur le problème dans le fichier JSON. J'ai trouvé la réponse de ceci lien .

1
dedunumax