Transformer un fichier .Json en CSV

Bonjour à tous,

Je cherche à récupérer le fichier des Mairies de France disponible via ce lien : Service-public.fr - Annuaire de l’administration - Base de données locales - data.gouv.fr.

Le souci est que, depuis un an, ce fichier n’est plus proposé au format CSV mais uniquement en .json. Je rencontre des difficultés à exploiter ces informations.
Est-ce que quelqu’un saurait comment convertir ce format .json en CSV ? J’ai effectué des recherches en ligne, mais je n’ai pas trouvé d’informations claires à ce sujet. Pour information, une fois le fichier téléchargé et extrait, il contient 36 000 petits fichiers .json (correspondant au nombre de mairies en France).

Je vous remercie par avance pour votre aide :slight_smile:

sinon en à peu près 5 lignes de python je pense que c’est faisable, avec la librairie pandas, si c’est un besoin très ponctuel tu trouvera surement quelqu’un pour te le faire d’ailleurs on peut en discuter, à titre gracieux évidemment vu que çà prends 5mn, sinon si c’est un besoin récurrent (bon les mairies ne changent pas tous les jours j’imagine), vaut mieux avoir un petit script / outil qui fait çà

1 « J'aime »

oups, oublie l’outil en ligne, effectivement c’est un peu gros comme fichiers à traiter, mieux vaut un script

Merci pour ton retour, en effet c’est un besoin ponctuel et comme tu l’a dit les Mairie ne change pas d’adresse tous les jours :sweat_smile:.

Comment peux tu m’aider ? (je suis un peu noob sur tout ce qui est Python…)

Hello

j’ai fait uniquement le fichier json de 200mo en csv → les petits associés j’ai pas compris la structure (mais je n’ai pas cherché)
je ne sais pas si c’est cela qui est souhaité? https://docs.google.com/spreadsheets/d/10u7VBTHkeiY7q0m2fX72JZ1ujf3QTeZhqEb5xwYdasA/edit?usp=sharing
++

En python :

import json
import csv

with open('data.json', 'r') as json_file:
    data = json.load(json_file)["service"]

headers = data[0].keys()

with open('output.csv', 'w', newline='', encoding='utf-8') as csv_output:
    csv_writer = csv.DictWriter(csv_output, fieldnames=headers)
    csv_writer.writeheader()  # Écrire les en-têtes
    csv_writer.writerows(data)  # Écrire les données

print("Données converties en CSV et enregistrées dans output.csv")
1 « J'aime »

je l’ai fait de mon coté aussi, avec pandas c’est plus rapide en général, déjà il n’avait pas besoin de tous les champs ce qui raccourci un peu la manip et surtout il fallait « applatir » le json, je sais pas si c’est le bon terme (flatten en anglais) car le json comporte des structures imbriquées (dictionnaires de dictionnaires), on ne peut pas les mettre tels quels dans un csv

1 « J'aime »

Merci a tous, j’ai ce qu’il me faut :slight_smile:

Oui j’avais eu le souci de cette imbrication et avec pandas c’était plus malin à faire

import pandas as pd
import json
with open('data.json', 'r') as json_file:
data = json.load(json_file)["service"]
df = pd.DataFrame(data)
df.to_csv('output.csv', index=False, encoding='utf-8')

1 « J'aime »