SlideShare une entreprise Scribd logo
Mémo : Programmer dans Openrefine avec GREL et Jython 1/2
Mémo : Analyse de données JSON dans Openrefine
Auteur : Mathieu Saby
Licence CC-BY
Historique
V1 10/11/2018 Création
La version d’Openrefine décrite est la 3.1.
Table des matières
1. Analyse de données JSON en GREL ...........................................................................................................2
2. Analyse de données JSON en Python........................................................................................................2
Mémo : Programmer dans Openrefine avec GREL et Jython 2/2
1. Analyse de données JSON en GREL
Une valeur JSON peut être atomique (texte (entre guillemets double), nombre, booléen, null) ou
complexe (objets, tableaux).
Les objets (entre {}) sont composés d’une ou plusieurs paires non ordonnées de couples « "clé" :
"valeur" » séparées par des virgules. Les clés sont toujours encadrées de guillemets doubles.
Ex : {"nom" : "Dupont"} ou {"nom" : "Dupont", "prenom" : "Jean", "age" :43}
Les tableaux (entre []) sont composés d’une ou plusieurs valeurs ordonnées séparées par des virgules.
Ex : ["Dupont"] ou ["Dupont","Martin",34]
Un tableau ou un objet peuvent être imbriqués dans un autre tableau ou objet.
Ex : {"clients" : [ {"nom" : "Dupont"}, {"nom" : "Martin"} ] }
La fonction GREL parseJson() transforme une chaîne en valeur JSON qui peut ensuite être manipulée en
parcourant l’index des tableaux ou en récupérant la valeur d’une clé.
Le Nième élément d’un tableau est récupérable avec la syntaxe [N].
La valeur correspondant à une clé est récupérable avec la syntaxe ["clé"] ou .clé.
➢ Ex : '["a","b",12]'.parseJson()[0]  « a »
➢ Ex : '{"a" : 1,"b" : 2}'.parseJson().a  1
Les éléments d’un tableau peuvent être listés et manipulés avec forEach (qui parcourt un tableau) et filtrés
avec filter (qui renvoie les éléments du tableau correspondant à certains critères)
Ex : soit l’objet JSON suivant (objet -> tableau -> 2 objets)
{"liste":[
{"id":"id001","name":"nom1"},
{"id":"id002","name":"nom2"}
]}
Pour récupérer un tableau contenant la clé "name" pour tous les éléments de la liste :
➢ forEach(value.parseJson()["liste"], element_temporaire, element_temporaire["name"])  [ "nom1", "nom2" ]
Pour récupérer le nom de l’élément id001:
➢ filter(value.parseJson()["liste"], element_temporaire, element_temporaire["id"]=="id001")[0]["name"]
2. Analyse de données JSON en Python
Si la clé était variable ou inconnue au lieu d’être toujours "liste", le plus simple est de recourir à Jython au
lieu de GREL.
Exemple :
import json
donnees = json.loads (value)
for cle, valeur in donnees.items():
return (valeur['name'])
Résultat :
value import json donnees = json.loa ...
{"inconnu1":{"id":"id001","name":"nom1"}} nom1
{"inconnu2":{"id":"id002","name":"nom2"}} nom2

Contenu connexe

PPTX
Luigi Paris.py meetup presentation
PDF
DNS sous linux
PPTX
Présentation de data.table
PDF
Compteur de visites
PPTX
Une Introduction à R
ODP
Tp-jquery
PPTX
Les nouveautés de java 7 et les promesses
PPT
Introduction à JavaScript
Luigi Paris.py meetup presentation
DNS sous linux
Présentation de data.table
Compteur de visites
Une Introduction à R
Tp-jquery
Les nouveautés de java 7 et les promesses
Introduction à JavaScript

Tendances (17)

PDF
La programmation fonctionnelle avec le langage OCaml
KEY
Ruby STAR
PDF
Les listes en Python
PPTX
Theme 8
PDF
Tp n 6 linux
PPTX
Theme 9(bis)
PDF
Python avancé : Tuple et objet
PDF
Spark dataframe
PPTX
Python For Data Science - French Course
PDF
20140123 java8 lambdas_jose-paumard-soat
PPT
.php1 : les fondamentaux du PHP
PDF
Développement informatique : Programmation fonctionnelle, décorateur et génér...
PPTX
Introduction Clojure - Geneva JUG - Octobre 2012
PDF
Asyncio: offrez des tulipes à vos entrées sorties asynchrones
PDF
Pratique de la programmation en go
PDF
Good or Evil: les fonctions anonymes en Javascript
La programmation fonctionnelle avec le langage OCaml
Ruby STAR
Les listes en Python
Theme 8
Tp n 6 linux
Theme 9(bis)
Python avancé : Tuple et objet
Spark dataframe
Python For Data Science - French Course
20140123 java8 lambdas_jose-paumard-soat
.php1 : les fondamentaux du PHP
Développement informatique : Programmation fonctionnelle, décorateur et génér...
Introduction Clojure - Geneva JUG - Octobre 2012
Asyncio: offrez des tulipes à vos entrées sorties asynchrones
Pratique de la programmation en go
Good or Evil: les fonctions anonymes en Javascript
Publicité

Plus de Mathieu Saby (10)

PPTX
Science ouverte et appels à projets
PDF
Programmer dans Openrefine avec GREL
PDF
Usage des expressions régulières dans Openrefine
PDF
Aide mémoire Openrefine 3.3 béta
PPTX
Nettoyer et transformer ses données avec Openrefine : partie 2
PPTX
Nettoyer et transformer ses données avec Openrefine : partie 1
PPTX
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
PPTX
Nettoyer et préparer des données avec OpenRefine
PDF
Gérer et diffuser ses données: principes et bonnes pratiques
PPTX
Le projet du SCD de Nice: une approche globale des données de la recherche
Science ouverte et appels à projets
Programmer dans Openrefine avec GREL
Usage des expressions régulières dans Openrefine
Aide mémoire Openrefine 3.3 béta
Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 1
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Nettoyer et préparer des données avec OpenRefine
Gérer et diffuser ses données: principes et bonnes pratiques
Le projet du SCD de Nice: une approche globale des données de la recherche
Publicité

Analyse de données JSON dans Openrefine

  • 1. Mémo : Programmer dans Openrefine avec GREL et Jython 1/2 Mémo : Analyse de données JSON dans Openrefine Auteur : Mathieu Saby Licence CC-BY Historique V1 10/11/2018 Création La version d’Openrefine décrite est la 3.1. Table des matières 1. Analyse de données JSON en GREL ...........................................................................................................2 2. Analyse de données JSON en Python........................................................................................................2
  • 2. Mémo : Programmer dans Openrefine avec GREL et Jython 2/2 1. Analyse de données JSON en GREL Une valeur JSON peut être atomique (texte (entre guillemets double), nombre, booléen, null) ou complexe (objets, tableaux). Les objets (entre {}) sont composés d’une ou plusieurs paires non ordonnées de couples « "clé" : "valeur" » séparées par des virgules. Les clés sont toujours encadrées de guillemets doubles. Ex : {"nom" : "Dupont"} ou {"nom" : "Dupont", "prenom" : "Jean", "age" :43} Les tableaux (entre []) sont composés d’une ou plusieurs valeurs ordonnées séparées par des virgules. Ex : ["Dupont"] ou ["Dupont","Martin",34] Un tableau ou un objet peuvent être imbriqués dans un autre tableau ou objet. Ex : {"clients" : [ {"nom" : "Dupont"}, {"nom" : "Martin"} ] } La fonction GREL parseJson() transforme une chaîne en valeur JSON qui peut ensuite être manipulée en parcourant l’index des tableaux ou en récupérant la valeur d’une clé. Le Nième élément d’un tableau est récupérable avec la syntaxe [N]. La valeur correspondant à une clé est récupérable avec la syntaxe ["clé"] ou .clé. ➢ Ex : '["a","b",12]'.parseJson()[0]  « a » ➢ Ex : '{"a" : 1,"b" : 2}'.parseJson().a  1 Les éléments d’un tableau peuvent être listés et manipulés avec forEach (qui parcourt un tableau) et filtrés avec filter (qui renvoie les éléments du tableau correspondant à certains critères) Ex : soit l’objet JSON suivant (objet -> tableau -> 2 objets) {"liste":[ {"id":"id001","name":"nom1"}, {"id":"id002","name":"nom2"} ]} Pour récupérer un tableau contenant la clé "name" pour tous les éléments de la liste : ➢ forEach(value.parseJson()["liste"], element_temporaire, element_temporaire["name"])  [ "nom1", "nom2" ] Pour récupérer le nom de l’élément id001: ➢ filter(value.parseJson()["liste"], element_temporaire, element_temporaire["id"]=="id001")[0]["name"] 2. Analyse de données JSON en Python Si la clé était variable ou inconnue au lieu d’être toujours "liste", le plus simple est de recourir à Jython au lieu de GREL. Exemple : import json donnees = json.loads (value) for cle, valeur in donnees.items(): return (valeur['name']) Résultat : value import json donnees = json.loa ... {"inconnu1":{"id":"id001","name":"nom1"}} nom1 {"inconnu2":{"id":"id002","name":"nom2"}} nom2