json2windev est un outil en ligne de commande écrit en Python qui permet de :
- convertir un JSON en structures WinDev
- générer une documentation Markdown riche (structures, dépendances, Mermaid, etc.)
- gérer des JSON réels et "sales" (clés invalides, collisions, tableaux hétérogènes, null, etc.)
- traiter un fichier ou un dossier entier (mode batch)
Le projet est pensé pour un usage professionnel, prédictible et testable.
- Python 3.10+ (recommandé : 3.11)
- Git
- Windows, Linux ou macOS
git clone https://github.com/arnaudfl/json2windev.git
cd json2windevpython -m venv .venv
⚠️ Important
L’environnement virtuel doit être activé avant toute commande (pytest,python -m json2windev, etc.).
.venv\Scripts\activate.batSet-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.venv\Scripts\Activate.ps1source .venv/bin/activateUne fois activé, l’invite doit afficher :
(.venv)
python -m pip install -e .python -m json2windev example.json➡️ Sortie par défaut : terminal (format WinDev, .txt).
python -m json2windev example.json --format markdownTraiter tous les fichiers .json d’un dossier.
python -m json2windev input_dir --output-dir out --format windev --continue-on-errorpython -m json2windev input_dir --output-dir out --format markdown --continue-on-errorStructure générée :
out/
├─ file1.txt
├─ file2.txt
└─ subdir/
└─ file3.txt| Option | Description |
|---|---|
--format |
windev (défaut) ou markdown |
--output |
Écrit la sortie dans un fichier |
--output-dir |
Dossier de sortie (mode batch) |
--continue-on-error |
Continue le batch même si un fichier échoue |
--pretty |
Pretty-print du JSON et sortie |
--validate-only |
Valide le JSON + schéma puis quitte |
--rules |
Chemin vers le fichier windev_rules.yaml |
Les règles de génération sont définies dans :
config/windev_rules.yamlElles contrôlent :
- préfixes (
s,n,tab,st, etc.) - types WinDev
- mots réservés
- règles sur les tableaux
- gestion de
<serialize="jsonKey">
Le moteur gère :
- clés invalides (
-,.,@, chiffre en premier, clé vide) - collisions déterministes (
sField,sField2,sField3) - tableaux hétérogènes
nullet unions de types- tableaux vides
➡️ Le JSON d’entrée n’est jamais modifié
La compatibilité est assurée via <serialize="clé originale">.
⚠️ Assurez-vous que l’environnement virtuel est bien activé ((.venv)visible)
pytest -qLes tests couvrent :
- inférence de schéma
- génération WinDev
- génération Markdown
- hardening JSON réel
- mode batch CLI
src/json2windev/
├─ app/ # CLI
├─ core/ # parsing, inférence
├─ renderers/ # WinDev / Markdown
├─ rules/ # chargement YAML
├─ utils/ # helpers (naming, dedupe)
tests/
config/
docs/Projet personnel – usage libre.