Python >> Tutoriel Python >  >> Python Tag >> JSON

Comment analyser JSON dans un Python One-Liner ?

Problème :Comment analyser un objet JSON en tant que Python One-Liner ?

Exemple  :Supposons que vous ayez extrait un objet JSON d'un serveur à l'aide de la commande curl :

curl -s http://example.com | python -mjson.tool
{
    "continent_code": "EU",
    "country": "Netherlands",
    "country_code": "NL",
    ...
    "timezone": "Europe/Amsterdam"
}

Source

Comment analyser l'objet JSON résultant et extraire, par exemple, la valeur "Netherlands" associé au "country" clé ?

Solution  :Le one-liner suivant accomplit cela :

curl -s http://example.com | python -c 'import sys, json; print(json.load(sys.stdin)["country"])'

La commande se compose de plusieurs parties. Passons-les en revue étape par étape :

  • curl -s http://example.com — extraire le fichier JSON du serveur http://example.com . Le -s flag signifie "silencieux" et supprime simplement les informations inutiles imprimées sur la sortie standard.
  • curl ... | ... — le tuyauteur | redirige la sortie d'un programme et l'utilise comme entrée pour un autre programme. Dans notre exemple, il prend l'objet JSON et l'écrit dans l'entrée standard du programme Python décrit ci-après.
  • python -c '...' — Exécute le programme Python inclus dans l'environnement de guillemets simples.
  • import sys, json; — importe les modules sys et json . Le point-virgule de fin indique que cette expression est prête et l'expression suivante (ce que vous appelleriez une ligne dans un script Python multiligne) suit.
  • print(json.load(sys.stdin)["country"]) - charge l'objet JSON à partir de l'entrée standard vers laquelle l'objet JSON a été redirigé à l'étape 2. Ensuite, la clé de dictionnaire "country" est utilisé pour accéder à la valeur résultante "Netherlands" . Le résultat est imprimé sur la sortie standard.

Ainsi, le résultat est la chaîne "Netherlands" dans notre exemple de fichier JSON.

Une alternative à cette méthode est la bibliothèque jq. Vous pouvez trouver un tutoriel complet sur cet excellent site Web.