JSON vers HTML
Outil en ligne gratuit de conversion JSON vers HTML, transformant en un clic des tableaux JSON ou des objets imbriqués en code de tableau HTML standard prêt à être intégré dans une page web. Prend en charge l'aplatissement des imbrications (user.name), les classes CSS personnalisées, le défilement horizontal responsive, 6 options de style visuel, les espaces réservés null, la protection par limite de lignes, la prévisualisation en temps réel avec double onglet Code et iframe, la coloration par type et l'historique local.
Recommandations connexes
À propos de JSON vers HTML et des tableaux HTML
Un outil JSON vers HTML (JSON to HTML Converter) est un utilitaire qui convertit automatiquement une structure de données JSON en code de tableau HTML standard. Il libère les développeurs du travail répétitif d'écrire à la main des templates `<table>` / `<tr>` / `<td>`, et est particulièrement adapté aux scénarios où des données imbriquées renvoyées par une API, des fichiers de configuration ou toute structure JSON doivent être rapidement affichés sous forme de tableau web.
Le tableau HTML (HTML Table) est un élément W3C standard d'affichage de données structurées, composé des balises `<table>` (conteneur), `<thead>` (en-tête), `<tbody>` (corps), `<tr>` (ligne), `<th>` (cellule d'en-tête), `<td>` (cellule de données), `<caption>` (titre), etc. Le code généré par cet outil suit strictement cette structure sémantique, facilitant le crawling SEO ultérieur et l'accessibilité (lecteurs d'écran compatibles).
Les outils JSON vers HTML du marché se divisent en trois catégories : la première ne génère que des chaînes de code HTML (comme tooltt.com, codebeautify.org), en mettant l'accent sur le « copier-coller prêt à l'emploi » ; la deuxième fournit également un aperçu visuel (comme cet outil, jsontables.com, TableConvert), en mettant l'accent sur le « WYSIWYG » ; la troisième prend en charge le développement des imbrications et l'injection de classes Tailwind (positionnement différenciant de cet outil), adaptée aux ingénieurs devant intégrer du JSON dans des projets frontend modernes.
L'« aplatissement des imbrications » de cet outil est un point différenciant par rapport à la plupart des concurrents : les outils traditionnels affichent `{user:{name:'Alice'}}` directement sous forme de chaîne `{"name":"Alice"}`, alors que cet outil le développe récursivement en colonne `user.name` (jusqu'à 6 niveaux de profondeur, séparateur personnalisable). Cela signifie que vous pouvez traiter directement des données métier réelles à imbrication complexe provenant des API GitHub, Stripe, Notion, etc., sans avoir à les aplatir au préalable avec jq ou lodash.
Un autre point différenciant est le « crochet de classe CSS personnalisée » : l'outil ne se contente pas de générer du style inline, il permet aussi d'injecter n'importe quelle chaîne de classes sur la balise `<table>`. Cela permet aux utilisateurs de frameworks CSS主流 comme Tailwind, Bootstrap, Bulma, DaisyUI de réutiliser directement le HTML généré par cet outil et d'obtenir immédiatement un style cohérent avec leur projet, sans avoir à modifier le CSS à la main.
Cas d'utilisation
- Développement frontend : restituer rapidement des données JSON renvoyées par une API en tableau HTML à intégrer dans un back-office ou une page de documentation
- Projets Tailwind / Bootstrap : saisir directement des classes Tailwind ou Bootstrap dans « nom de classe table », pour une intégration transparente avec votre système de style existant
- Pages web responsive : emballage avec défilement horizontal activé par défaut, les tableaux mobiles n'écrasent pas la mise en page
- Visualisation de données : coller des tableaux avec style dans des plateformes prenant en charge l'intégration HTML comme les blogs, la documentation, Confluence, Notion
- Génération de rapports : convertir rapidement des données JSON exportées du backend en rapports HTML par e-mail à envoyer aux équipes métier
- Prototypage frontend : prévisualiser le style d'un tableau avec de vraies données pendant la phase de design, pour s'aligner avec le produit et le design avant la livraison
- Systèmes CMS : créer des extraits de tableaux HTML statiques pour WordPress, Drupal et autres CMS, en évitant la complexité des moteurs de templates
- Tests et débogage : coller le résultat de JSON.stringify depuis la console du navigateur pour prévisualiser rapidement la structure bidimensionnelle de données imbriquées complexes
- Modèles d'e-mail : intégrer le HTML du tableau dans un e-mail HTML (attention à tester la compatibilité avec les clients comme Outlook)
- Rédaction de documentation API : intégrer des tableaux HTML dans la documentation Markdown / Swagger / Redoc en remplacement des exemples JSON par défaut
- Enseignement : convertir les devoirs JSON imbriqués des étudiants en tableaux pour une correction et un affichage unifiés dans un cours de structures de données
- Rapports de nettoyage de données : convertir un JSON imbriqué exporté d'une base de données en tableau via le mode d'aplatissement, pour comparer facilement les champs
Comment utiliser
- Collez un tableau JSON (recommandé) ou un objet unique dans l'éditeur de gauche, ou cliquez sur « Sample » pour charger 3 exemples de produits, ou cliquez sur « Upload » pour téléverser un fichier .json / .txt
- Sélectionnez le mode de traitement des imbrications dans la barre d'outils (« Aplatir » recommandé), les objets imbriqués seront automatiquement développés en clés séparées par des points comme `user.name`
- Cliquez sur le bouton « Convert » (ou appuyez directement sur Entrée) pour déclencher la conversion ; un debounce de 500 ms protège la saisie
- Consultez le code du tableau HTML avec coloration syntaxique dans l'onglet Code à droite, et le rendu en temps réel dans l'iframe de l'onglet Aperçu
- Cochez les options de style dans la barre d'outils (zébrures / bordures / survol / compact / responsive), remplissez la classe table personnalisée, définissez l'espace réservé null, l'aperçu se met à jour en temps réel
- Une fois satisfait, cliquez sur « Copy » pour copier le code HTML à coller dans une page web, ou sur « Download » pour télécharger un fichier table.html ; cliquez sur Reset pour réinitialiser
Fonctionnalités
- Aplatissement automatique des objets imbriqués : développement récursif de `{user:{name,age}}` en clés séparées par des points comme `user.name`, `user.age` (séparateur configurable), sans avoir à écrire un script d'aplatissement
- Trois modes de traitement des imbrications : Aplatir (Recommandé, développement automatique jusqu'à 6 niveaux de profondeur) / Clés de premier niveau (objets imbriqués en colonne unique) / En chaîne (objets imbriqués convertis en aperçu de chaîne JSON)
- Crochet de classe CSS personnalisée : injectez une chaîne de classes personnalisée sur `<table>` et éventuellement sur le `<div>` externe, pour une intégration transparente avec Tailwind, Bootstrap, Bulma et autres systèmes de style
- Défilement horizontal responsive : conteneur externe par défaut avec `overflow-x:auto`, une barre de défilement horizontale apparaît automatiquement sur les petits écrans sans déformer la mise en page
- 6 options de style visuel : lignes zébrées, bordures, surbrillance au survol, mode compact, colonne d'index (#), titre Caption du tableau, cases à cocher de la barre d'outils appliquées en temps réel
- Double onglet de prévisualisation Code et iframe : l'onglet Code affiche le code source HTML avec coloration syntaxique, l'onglet Aperçu restitue le rendu réel du tableau via une iframe sandbox
- Coloration par type : null affiché en gris italique (texte d'espace réservé personnalisable), booléens true/false en vert/rouge, nombres en bleu, survol des objets imbriqués pour voir le JSON complet
- Protection par limite de lignes : plafond par défaut de 1000 lignes (réglable de 1 à 10000), troncature automatique au-delà avec notification « tronqué » dans l'interface, pour éviter les ralentissements du navigateur sur des DOM très volumineux
- Retour statistique de génération : le panneau de droite affiche en temps réel « X lignes × Y colonnes générées » + badge de troncature, pour voir d'un coup d'œil l'échelle des données lors du débogage de longs JSON
- Copie et téléchargement en un clic : en mode Code, copiez le code source HTML dans le presse-papiers ou téléchargez-le sous forme de fichier table.html directement utilisable sur un site web
- Données d'exemple + téléversement de fichier : 3 exemples de produits intégrés (Laptop / Mouse / Desk Chair) chargeables en un clic, prise en charge du glisser-déposer ou du clic pour téléverser des fichiers .json / .txt
- Réinitialisation des options en un clic : le bouton Reset à droite de la barre d'outils rétablit en un clic les 14 options configurables à leurs valeurs par défaut, pour des essais et erreurs rapides
- Historique local : persistance des 200 dernières entrées dans le localStorage, restauration rapide après rafraîchissement ou fermeture accidentelle de la page
- Fonctionnement 100 % local dans le navigateur : tout le parsing JSON, la génération HTML, la copie et le téléchargement se font dans votre navigateur, aucune donnée envoyée sur un serveur
Exemples de code
JavaScript : aplatissement des imbrications + intégration de classes Tailwind
javascriptL'usage le plus courant en développement : après un appel à l'API GitHub, les objets imbriqués sont aplatis en clés séparées par des points, puis intégrés au projet avec des classes Tailwind.
// 1) Appel de l'API GitHub pour récupérer la liste des utilisateurs
async function fetchUsers() {
const res = await fetch('https://api.github.com/users?per_page=10');
return await res.json();
}
// 2) Fonction d'aplatissement des imbrications (équivalent à la logique d'aplatissement de cet outil)
function flattenObject(obj, prefix = '', sep = '.', result = {}) {
for (const [k, v] of Object.entries(obj || {})) {
const key = prefix ? `${prefix}${sep}${k}` : k;
if (v && typeof v === 'object' && !Array.isArray(v)) {
flattenObject(v, key, sep, result);
} else {
result[key] = v;
}
}
return result;
}
// 3) Convertir les données aplaties en tableau HTML et injecter les classes Tailwind
function generateHtmlTable(rows) {
const flat = rows.map(r => flattenObject(r));
const cols = [...new Set(flat.flatMap(r => Object.keys(r)))];
const thead = cols.map(c => `<th class="px-4 py-2 text-left">${c}</th>`).join('');
const tbody = flat.map(r =>
`<tr class="border-b hover:bg-gray-50">${cols.map(c => `<td class="px-4 py-2">${r[c] ?? 'N/A'}</td>`).join('')}</tr>`
).join('');
return `<table class="min-w-full text-sm">
<thead class="bg-gray-100"><tr>${thead}</tr></thead>
<tbody>${tbody}</tbody>
</table>`;
}
// 4) Injection dans la page
const users = await fetchUsers();
const html = generateHtmlTable(users);
document.getElementById('table-container').innerHTML = html;
console.log('Généré ' + users.length + ' lignes, ' + (Object.keys(flattenObject(users[0])).length) + ' colonnes');Python : conversion de JSON imbriqué en tableau HTML dans Flask (sans dépendance frontend)
pythonLors du rendu de templates côté backend, vous pouvez générer directement le même tableau HTML avec la bibliothèque standard Python, en prenant en charge l'aplatissement des imbrications et l'injection de classes.
from flask import Flask, jsonify, render_template_string
import json
app = Flask(__name__)
TEMPLATE = """
<!doctype html><html><body>
<div class="overflow-x-auto">{{ table_html | safe }}</div>
</body></html>
"""
def flatten(obj, prefix='', sep='.', result=None):
"""Aplatissement récursif des objets imbriqués"""
if result is None:
result = {}
for k, v in (obj or {}).items():
key = f"{prefix}{sep}{k}" if prefix else k
if isinstance(v, dict):
flatten(v, key, sep, result)
else:
result[key] = v
return result
def json_to_html_table(data, table_class='min-w-full border-collapse',
max_rows=1000, responsive=True):
if isinstance(data, dict):
data = [data]
if not data:
return "<p>Aucune donnée</p>"
# Troncature du nombre de lignes
truncated = False
if len(data) > max_rows:
data = data[:max_rows]
truncated = True
# Aplatir chaque ligne de données
flat_rows = [flatten(row) for row in data]
# Collecter tous les noms de colonnes (avec un set pour le dédoublonnage, en conservant l'ordre d'insertion)
columns = []
for row in flat_rows:
for k in row.keys():
if k not in columns:
columns.append(k)
# Générer l'en-tête
thead = "".join(f'<th class="px-4 py-2 text-left bg-gray-100">{c}</th>' for c in columns)
# Générer les lignes du tableau
rows = []
for i, row in enumerate(flat_rows):
bg = "bg-gray-50" if i % 2 == 1 else ""
tds = "".join(
f'<td class="px-4 py-2 {bg}">{("N/A" if row.get(c) is None else row.get(c, ""))}</td>'
for c in columns
)
rows.append(f'<tr class="hover:bg-blue-50">{tds}</tr>')
html = f'<table class="{table_class}"><thead><tr>{thead}</tr></thead><tbody>{"".join(rows)}</tbody></table>'
if responsive:
html = f'<div class="overflow-x-auto">{html}</div>'
if truncated:
html = f'<p class="text-amber-600 text-sm">Données tronquées aux {max_rows} premières lignes</p>{html}'
return html
@app.route('/api/users')
def users():
data = json.load(open('users.json'))
return jsonify(data)
@app.route('/users.html')
def users_html():
import requests
data = requests.get('http://localhost:5000/api/users').json()
return render_template_string(TEMPLATE, table_html=json_to_html_table(data))
if __name__ == '__main__':
app.run(debug=True)Ligne de commande : aplatissement via jq + génération d'un rapport HTML statique avec cet outil
bashScénario opérationnel : après avoir agrégé des logs JSON imbriqués et les avoir aplatis avec jq, collez-les dans cet outil pour générer un rapport HTML avec classes Tailwind.
# 1) Utiliser jq pour agréger et aplatir les logs imbriqués en noms de clés à points
cat app.log | jq -s '
group_by(.response.status_code) |
map({
status: .[0].response.status_code,
count: length,
"first_request.method": .[0].request.method,
"last_request.url": .[-1].request.url,
"first_seen": min_by(.timestamp).timestamp,
"last_seen": max_by(.timestamp).timestamp
})
' > stats.json
# 2) Coller stats.json dans cet outil
# Sélectionner le mode « Aplatir (Recommandé) » dans la barre d'outils
# Cocher « Zébrures + Emballage responsive + Bordures »
# Saisir dans le nom de classe table : min-w-full text-sm border-collapse
# Définir l'espace réservé null : - (les champs manquants s'affichent en -)
# Définir le Caption : Statistiques des logs d'erreur de production 2026-07
# Cliquer sur Convert puis télécharger table.html
# 3) Téléverser sur S3 / OSS en site statique
aws s3 cp table.html s3://my-bucket/reports/2026-07.html --acl public-read
# Ou intégrer dans la documentation Confluence / Notion / VuePress
sed -i '' 's/min-w-full/min-w-full shadow-md/g' table.html
# Ou envoyer un e-mail HTML
mutt -e "set content_type=text/html" -s "Logs d'erreur 2026-07" your@email.com < table.htmlFAQ
Comment convertir des données JSON en tableau HTML ?
Collez votre tableau JSON (chaque élément étant un objet) dans la zone de saisie de gauche, cliquez sur le bouton « Convert » de la barre d'outils, l'onglet Code à droite affichera le code du tableau HTML avec coloration syntaxique. Basculez sur l'onglet Aperçu pour voir le rendu en temps réel dans une iframe, puis cliquez sur « Copier » pour le coller dans n'importe quelle page HTML.
Les objets JSON imbriqués peuvent-ils être convertis en tableau HTML ?
Oui. L'outil intègre un mode d'aplatissement des imbrications qui développe récursivement `{user:{name:'Alice',age:30}}` en deux colonnes `user.name` et `user.age`, jusqu'à 6 niveaux de profondeur. Vous pouvez aussi basculer en mode « Clés de premier niveau » (objets imbriqués conservés en colonne unique sous forme de chaîne JSON) ou en mode « En chaîne » (totalement traités comme des chaînes).
Le séparateur des noms de clés après aplatissement peut-il être modifié ?
Par défaut, le séparateur utilisé est `.` (`user.name`), conforme aux conventions主流 de JavaScript, MongoDB et Lodash. Si vous avez besoin de `user_name` ou `user/name`, vous pouvez personnaliser le séparateur dans le champ « Séparateur » de la barre d'outils (visible pour les utilisateurs avancés).
Le tableau HTML généré peut-il être personnalisé en termes de style ?
L'outil propose trois moyens de personnaliser le style : ① les 6 cases à cocher visuelles de la barre d'outils (zébrures / bordures / survol / compact / index / Caption) appliquées en temps réel ; ② remplissez le champ « nom de classe table » avec une classe personnalisée (par exemple `min-w-full border-collapse` de Tailwind), qui sera injectée dans `<table class="...">` ; ③ modifiez directement le HTML généré avant de l'utiliser.
Prend-il en charge Tailwind et Bootstrap ?
Oui. Remplissez le champ « nom de classe table » avec des classes Tailwind (par exemple `min-w-full border-collapse text-sm`) ou des classes Bootstrap (par exemple `table table-striped table-hover table-bordered`), l'outil injectera ces classes dans la balise `<table>`. À noter : les styles inline de l'outil ont la priorité la plus élevée et écraseront certains styles de Tailwind (couleur de fond, padding), il est donc recommandé de désactiver les options correspondantes de la barre d'outils (comme les zébrures) avant d'utiliser Tailwind.
Quelle est la différence entre l'onglet Code et l'onglet Aperçu ?
L'onglet Code affiche le code source HTML avec coloration syntaxique, pratique pour copier et modifier ; l'onglet Aperçu restitue le rendu réel du tableau via une iframe sandbox, pour un aperçu fidèle. Le contenu est strictement identique dans les deux onglets, seule la forme de présentation diffère, pour basculer rapidement entre « voir le code » et « voir le rendu ».
Le HTML généré est-il responsive sur mobile ?
Oui. L'outil active par défaut l'option « Emballage responsive », qui enveloppe le `<table>` dans un conteneur `<div style="overflow-x:auto;max-width:100%;">`. Lorsque la largeur de l'écran est inférieure à celle du tableau, une barre de défilement horizontale apparaît automatiquement dans le conteneur, évitant que le tableau n'écrase la mise en page. Vous pouvez désactiver cette option dans la barre d'outils.
Comment sont affichés les null, booléens et nombres dans les cellules ?
L'outil applique une coloration par type : null est affiché en gris italique (le texte d'espace réservé peut être personnalisé dans la barre d'outils, par exemple `N/A`, `-`, `vide`) ; les booléens true sont affichés en vert, false en rouge ; les nombres en bleu ; les chaînes ordinaires telles quelles ; en mode d'aplatissement, les objets imbriqués sont accessibles par leur chemin, dans les autres modes ils sont convertis en chaîne JSON et tronqués à 50 caractères.
Le code HTML généré peut-il être utilisé directement sur un site web ?
Oui. Le code généré est une structure de tableau HTML5 standard W3C (`<table>` / `<thead>` / `<tbody>` / `<caption>`), avec du CSS en style inline, qui peut être collé directement dans n'importe quelle page HTML pour un usage autonome, sans dépendance à un CSS ou JS externe. Vous pouvez aussi le télécharger sous forme de fichier table.html.
Quelle est la différence entre JSON vers HTML et JSON vers CSV ?
Le tableau HTML est un format visuel avec style, idéal pour être intégré directement dans une page web ; le CSV est un format de données en texte brut, adapté à l'import dans Excel, Pandas ou une base de données pour l'analyse de données. Les deux sont générés à partir des mêmes données JSON : nous recommandons d'utiliser d'abord cet outil pour prévisualiser la mise en page sur le web, puis l'outil JSON vers CSV pour exporter la version données.
Comment modifier le texte des en-têtes ?
L'outil utilise automatiquement les clés de premier niveau de l'objet JSON comme contenu des en-têtes `<th>` (en mode d'aplatissement, le chemin complet séparé par des points, par exemple `user.name`). Si vous souhaitez un autre texte d'en-tête (par exemple en français), trois solutions : ① renommez directement les clés du JSON source en français ; ② après génération, modifiez manuellement le contenu de `<th>...</th>` dans l'onglet Code à droite ; ③ utilisez sed pour faire un remplacement en masse sur le HTML généré.
Le fichier table.html téléchargé s'ouvre en blanc dans le navigateur, que faire ?
Le table.html téléchargé ne contient que la structure de balise `<table>` (avec éventuellement le `<div>` d'emballage responsive), sans la structure HTML complète (`<html>` / `<head>` / `<body>`), car il s'agit d'un extrait de code conçu pour être intégré dans une page web existante. Vous pouvez ajouter manuellement la structure HTML complète avec un outil de formatage HTML, ou coller directement l'extrait à l'emplacement correspondant de la page de votre projet.
La génération d'un tableau de plus de 1000 lignes ralentit la page, que faire ?
L'outil applique par défaut une protection à 1000 lignes et affiche « tronqué » au-delà. Si vous avez vraiment besoin de générer un grand tableau de 5000 lignes, vous pouvez régler le « Nombre max de lignes » de la barre d'outils sur 10000, mais nous recommandons : ① de le diviser en tableaux paginés (50 lignes par page) ; ② d'utiliser IntersectionObserver pour le défilement virtuel ; ③ ou d'utiliser des bibliothèques de composants dédiées comme TanStack Table ou AG Grid pour l'affichage de données.
Les données sont-elles envoyées sur un serveur ? La confidentialité est-elle garantie ?
Fonctionnement 100 % local dans le navigateur. Tout le parsing JSON, la génération HTML, la copie et le téléchargement se font dans votre navigateur en JavaScript, et la lecture des fichiers s'effectue uniquement via le FileReader local, sans aucun envoi vers un serveur. Vous pouvez utiliser en toute confiance des JSON contenant des retours d'API sensibles ou des champs métier non publiés ; toutes les données sont effacées à la fermeture de la page.
Dépannage
Message « Veuillez saisir des données JSON » ou erreur similaire
La zone de saisie de gauche est vide ou ne contient que des espaces. Assurez-vous d'avoir collé du contenu JSON valide, ou cliquez sur « Sample » pour charger des données d'exemple, ou sur « Upload » pour sélectionner un fichier .json / .txt.
Message « Unexpected token ... in JSON at position N »
Le format JSON est invalide. Causes courantes : ① virgule en trop à la fin (par exemple [{},{},]) ; ② utilisation de guillemets simples au lieu de doubles ; ③ syntaxe d'objet JS (par exemple {key: value}) au lieu de JSON ({"key": "value"}). Vous pouvez utiliser un outil de formatage JSON pour valider et corriger au préalable.
Le tableau généré n'a qu'un en-tête, pas de lignes de données
Les données JSON sont un tableau vide [] ou un objet vide {}. L'outil renvoie le commentaire « <!-- No valid objects found --> » pour un tableau vide. Ajoutez au moins un objet dans le JSON source.
Noms de colonnes trop longs en mode Aplatir (par exemple user.profile.address.city.country.code)
Lorsque les niveaux d'imbrication sont trop profonds, nous recommandons : ① de passer en mode « Clés de premier niveau » (seuls les champs de premier niveau sont pris, les objets imbriqués en colonne JSON complète) ; ② de modifier la structure du JSON source pour réduire les imbrications inutiles ; ③ d'utiliser le bouton Reset de la barre d'outils pour restaurer la configuration d'aplatissement par défaut.
Les classes Tailwind injectées ne s'appliquent pas
L'outil émet par défaut du style inline (comme padding, background) qui écrasera les classes utilitaires Tailwind du même nom. Nous recommandons : ① de désactiver les options de style correspondantes de la barre d'outils (comme les Zébrures) avant d'utiliser Tailwind pour contrôler la couleur de fond ; ② ou d'utiliser PostCSS après la génération pour supprimer les attributs style inline.
Hauteur du tableau compressée après emballage responsive
L'« emballage responsive » fait que la hauteur du div externe suit celle du tableau. Si votre conteneur parent est en flex sans hauteur spécifiée, le tableau enfant peut être compressé. Vous pouvez ajouter min-h-0 sur le conteneur parent ou définir une hauteur pour le tableau.
Le fichier table.html téléchargé s'ouvre en blanc dans le navigateur
Le fichier téléchargé ne contient qu'un extrait `<table>` (avec éventuellement le `<div>` d'emballage responsive), sans la structure HTML complète (`<!doctype html>` / `<html>` / `<head>` / `<body>`). Il s'agit d'un choix de conception pour faciliter l'intégration dans une page web existante. Vous pouvez utiliser un outil de formatage HTML pour ajouter la structure complète, ou coller directement l'extrait à l'emplacement correspondant de votre projet.
Caractères accentués mal affichés dans les en-têtes
Les clés du JSON source contiennent des caractères accentués, assurez-vous que le fichier source est lui-même encodé en UTF-8. Si le JSON a été copié depuis Excel, il peut être en GBK, utilisez d'abord un outil de conversion d'encodage pour le convertir en UTF-8 avant de coller.
Modifier en masse le tableau généré (par exemple remplacer le logo de l'entreprise, changer les couleurs)
Après la génération, copiez le HTML dans l'onglet Code à droite, et utilisez sed / PostCSS / un script personnalisé pour remplacer en masse les attributs de style. Commande courante : sed -i '' 's/#f9fafb/#your-color/g' table.html.
Tableau de plus de 1000 lignes qui ralentit la page
L'outil applique par défaut une protection à 1000 lignes. Vous pouvez régler maxRows sur 10000 dans la barre d'outils, mais les performances de rendu du navigateur se dégradent sensiblement pour des DOM très volumineux (>1000 nœuds). Nous recommandons : ① de diviser en tableaux paginés (50 lignes par page) ; ② d'utiliser IntersectionObserver pour le défilement virtuel ; ③ ou d'utiliser des bibliothèques de composants dédiées comme TanStack Table ou AG Grid pour l'affichage de données.
L'historique a été perdu
L'historique est stocké dans le localStorage du navigateur. Effacer les données du navigateur, passer en mode privé ou utiliser un autre navigateur entraîne la disparition de l'historique. L'outil ne téléverse aucun historique sur un serveur, il est donc impossible de synchroniser entre appareils.
Impossible de voir les données brutes après la limite de lignes
L'outil applique maxRows=1000 par défaut, avec troncature au-delà. Si vos données source font > 1000 lignes mais que vous n'avez besoin que des N premières pour la prévisualisation, réduire maxRows (par exemple 100) permet au contraire d'obtenir le résultat plus rapidement. Pour traiter l'ensemble des données, nous recommandons d'utiliser directement un script Python Faker / Node.js.
Glossaire
- Tableau HTML (HTML Table)
- Élément W3C standard d'affichage de données structurées, composé de balises sémantiques table / thead / tbody / tr / th / td / caption. Le code généré par cet outil suit strictement cette structure.
- Tableau JSON
- Collection d'objets entourée de crochets [...]. L'outil considère chaque objet du tableau comme une ligne ; un tableau vide ne génère aucun tableau (un message s'affiche).
- Objet JSON
- Collection de paires clé-valeur entourée d'accolades {}. L'outil utilise chaque clé de l'objet comme en-tête, et la valeur comme cellule ; un objet unique est automatiquement encapsulé dans un tableau à une seule ligne.
- Aplatissement des imbrications (Flatten)
- Développement récursif d'un objet imbriqué en noms de clés plats séparés par des points, par exemple {user:{name:'A'}} → 'user.name'. L'outil prend en charge l'aplatissement automatique jusqu'à 6 niveaux de profondeur, séparateur configurable.
- thead / tbody
- Les deux zones sémantiques d'un tableau HTML : thead enveloppe la ligne d'en-tête (th), tbody enveloppe les lignes de données (td). Le code généré par cet outil distingue strictement ces deux parties.
- Caption
- Balise de titre du tableau, située en première position à l'intérieur de table. L'outil prend en charge la personnalisation du texte Caption, qui s'affiche au-dessus du tableau lorsqu'elle est activée, utile pour le SEO et l'accessibilité.
- Zébrures (Zebra Striping)
- Motif visuel où les lignes paires et impaires du tableau utilisent des couleurs de fond alternées, souvent une combinaison #fff / #f9fafb. L'outil active ce motif via la case « Zébrures » de la barre d'outils, avec un gain de lisibilité significatif pour les longs tableaux.
- Style inline (Inline Style)
- CSS écrit directement via l'attribut style d'une balise HTML, plutôt que via une feuille de style externe. Par défaut, tous les styles de l'outil sont émis en style inline, prêts à l'emploi sans fichier CSS supplémentaire.
- Crochet de classe CSS
- Capacité différenciante de cet outil : injecter n'importe quelle chaîne de classes (par exemple des classes Tailwind) sur la balise `<table>`, pour une intégration transparente avec un framework CSS existant. Une amélioration clé par rapport aux concurrents.
- iframe sandbox
- Mode bac à sable sécurisé de la balise HTML iframe, qui peut limiter l'exécution de scripts, la soumission de formulaires, etc. L'outil utilise une iframe avec sandbox="allow-same-origin" pour prévisualiser le HTML généré, afin d'éviter toute exécution accidentelle de script.
- Coloration par type (type-aware)
- Capacité différenciante de cet outil : appliquer différentes couleurs en fonction du type JS de la valeur de la cellule (null / boolean / number / object / string), pour rendre le débogage des données API plus intuitif.
- Historique localStorage
- Stockage local clé-valeur fourni par le navigateur (capacité d'environ 5-10 Mo). L'outil utilise le localStorage pour conserver les 200 dernières entrées, restaurables rapidement après rafraîchissement ou fermeture accidentelle de la page.
- Emballage responsive (Responsive Wrapper)
- Ajout d'un <div style="overflow-x:auto;max-width:100%;"> autour du tableau, pour qu'une barre de défilement horizontale apparaisse automatiquement sur les petits écrans. Activé par défaut dans l'outil, désactivable via la barre d'outils.
- Debounce
- Technique d'optimisation des performances frontend : regrouper les rappels d'événements haute fréquence (comme la saisie) pour ne les exécuter qu'une seule fois après le dernier déclenchement. L'outil applique un debounce de 500 ms pour éviter les ralentissements lors de l'analyse de gros fichiers.
- W3C HTML5
- Spécification HTML définie par le World Wide Web Consortium (W3C). Le code généré par cet outil est conforme à la spécification HTML5 et s'affiche correctement dans tous les navigateurs modernes.
Tableau comparatif des trois modes de traitement des objets imbriqués
La barre d'outils propose trois modes pour s'adapter aux différents scénarios d'imbrication. Choisissez en fonction de la complexité de la structure JSON :
| Mode | Comportement | Exemple | Scénario |
|---|---|---|---|
Aplatir (Recommandé) | Développement récursif des objets imbriqués en noms de clés séparés par des points (profondeur ≤ 6) | user.name / user.tags.0 | Structures imbriquées d'API réelles (GitHub / Stripe / Notion) ; souhaitez une colonne par champ |
Clés de premier niveau | Seules les clés de premier niveau sont prises ; les objets / tableaux imbriqués deviennent une colonne unique de chaîne JSON | user / tags | Structure imbriquée instable ou trop profonde (>6 niveaux) ; seule la vue d'ensemble des champs de premier niveau importe |
En chaîne | Toutes les valeurs sont forcées en chaînes ; les objets imbriqués sont directement sérialisés en JSON | user (en tant que JSON complet) | Scénario de débogage : souhaitez conserver la structure JSON brute pour inspection visuelle |
Tableau de référence rapide des 14 options configurables de la barre d'outils
Les 14 options configurables de la barre d'outils et leurs différences visuelles, pour vous aider à choisir rapidement la bonne combinaison :
| Option | Type | Effet visuel / comportement |
|---|---|---|
includeIndex | checkbox | Ajoute une colonne # d'indexation à l'extrême gauche du tableau (incrémentée à partir de 1) |
striped | checkbox | Couleur de fond alternée entre lignes paires et impaires (blanc / #f9fafb) |
bordered | checkbox | Bordure grise de 1 px autour de chaque cellule + ligne d'accentuation de 2 px sous l'en-tête |
hover | checkbox | Toute la ligne devient gris clair #f9fafb au survol de la souris |
compact | checkbox | Padding des cellules réduit de 10px×14px à 6px×8px |
responsive | checkbox | Conteneur externe avec overflow-x:auto, défilement horizontal sur les petits écrans |
flattenMode | select | Traitement des imbrications : Aplatir (Recommandé) / Clés de premier niveau / En chaîne |
tableClass | text | Classe CSS personnalisée injectée dans <table class="..."> |
nullPlaceholder | text | Texte affiché pour les cellules null / undefined (vide → 'null') |
maxRows | number | Nombre maximum de lignes générées (1-10000), troncature automatique au-delà avec notification |
caption | text | Texte de titre personnalisé affiché au-dessus du tableau (caption-side: top) |
indexHeader | text | Texte d'en-tête de la colonne d'index (par défaut #) |
flattenSeparator | text | Séparateur des noms de clés en mode d'aplatissement (par défaut ., modifiable en _ / - etc.) |
wrapperClass | text | Classe CSS personnalisée du <div> d'emballage responsive (utilisateurs avancés) |
Tableau de référence rapide des règles de coloration par type de cellule
L'outil applique automatiquement différentes couleurs en fonction du type JavaScript de la valeur JSON, pour identifier rapidement le type de donnée :
| Type JS | Méthode de détection | Style appliqué | Exemple de sortie |
|---|---|---|---|
null / undefined | val === null || val === undefined | color: #9ca3af; font-style: italic; affiche le texte d'espace réservé (personnalisable) | <span style="color:#9ca3af;font-style:italic;">N/A</span> |
boolean (true) | typeof val === 'boolean' && val | color: #059669; | <span style="color:#059669;">true</span> |
boolean (false) | typeof val === 'boolean' && !val | color: #dc2626; | <span style="color:#dc2626;">false</span> |
number | typeof val === 'number' | color: #2563eb; | <span style="color:#2563eb;">42</span> |
object / array (mode Aplatir) | type === 'object' + valeur récupérée par chemin en mode Aplatir | Valeur atomique extraite de l'objet imbriqué selon le chemin | user.name → 'Alice' |
object / array (autres modes) | typeof val === 'object' | JSON.stringify puis échappé et tronqué à 50 caractères, violet italique + survol via title pour voir le JSON complet | <span style="color:#7c3aed;font-style:italic;" title="...">{"id":1…</span> |
string | Autres cas | Couleur de texte par défaut #4b5563 | Jennifer Martinez |
Privacy & Security
Cet outil JSON vers HTML effectue l'intégralité du parsing JSON, de l'aplatissement des imbrications, de la génération HTML, de la copie et du téléchargement directement dans votre navigateur via JavaScript. Les données JSON saisies et le code HTML généré ne sont jamais téléversés sur un serveur, ni enregistrés, mis en cache ou stockés dans le cloud. Vous pouvez utiliser en toute confiance des JSON sensibles contenant des retours d'API non publiés ou des champs métier internes ; toutes les données sont effacées dès la fermeture de la page.
Authoritative References
- Compression JSON
- CSV vers JSON
- JSON vers CSV
- JSON Diff
- JSON Escape / Unescape
- JSON Flatten
- Formatage JSON
- Générateur JSON
- Requête JSONPath
- Fusionner JSON
- Réparer JSON
- Validateur JSON Schema
- Trier JSON
- JSON Stringify
- JSON vers HTML
- JSON vers Java
- JSON to Markdown
- JSON en SQL
- JSON vers TOML
- JSON vers TypeScript
- XML vers JSON
- JSON vers XML
- YAML vers JSON
- JSON vers YAML
- JSON vers Python
- JSON vers Go
- JSON vers Rust
- JSON vers Swift
- JSON vers C#
- JSON vers C++
- JSON vers PHP