JSON do HTML

Opcje:|

Darmowe narzędzie online do konwersji tablic JSON lub zagnieżdżonych obiektów na standardowy kod tabeli HTML do osadzania na stronach. Obsługa spłaszczania zagnieżdżonych struktur, niestandardowych klas CSS, przewijania poziomego, 6 stylów wizualnych, wartości null, ochrony limitu wierszy. Podwójne zakładki Code i iframe do podglądu w czasie rzeczywistym.

Powiązane Rekomendacje

O JSON do HTML i tabelach HTML

Konwerter JSON do HTML to praktyczne narzędzie, które automatycznie przekształca struktury danych JSON w standardowy kod tabeli HTML. Uwalnia programistów od powtarzalnej pracy ręcznego pisania szablonów `<table>` / `<tr>` / `<td>`, idealne do szybkiego wyświetlania zagnieżdżonych odpowiedzi API, plików konfiguracyjnych lub dowolnych struktur JSON jako tabel webowych.

Tabela HTML to standardowy element wyświetlania danych strukturalnych W3C, składający się z kontenera `<table>`, nagłówka `<thead>`, treści `<tbody>`, wierszy `<tr>`, komórek nagłówka `<th>`, komórek danych `<td>`, podpisu `<caption>` i innych semantycznych tagów. Kod generowany przez to narzędzie ściśle przestrzega tej semantycznej struktury, co jest przyjazne dla SEO i dostępności (czytniki ekranu mogą rozpoznawać).

Na rynku istnieją trzy kategorie narzędzi JSON do HTML: pierwsza generuje tylko ciągi kodu HTML (np. tooltt.com, codebeautify.org), podkreślając „skopiuj i użyj"; druga zapewnia również podgląd wizualny (np. to narzędzie, jsontables.com, TableConvert), podkreślając „WYSIWYG"; trzecia obsługuje rozwijanie zagnieżdżenia + wstrzykiwanie klas Tailwind (wyróżnik tego narzędzia), odpowiednia dla inżynierów, którzy muszą osadzać JSON w nowoczesnych projektach front-end.

„Spłaszczanie zagnieżdżenia" tego narzędzia to wyróżniona cecha w porównaniu z większością konkurentów: tradycyjne narzędzia wyświetlą `{user:{name:'Alice'}}` jako ciąg `"{\"name\":\"Alice\"}"`, podczas gdy to narzędzie rekurencyjnie rozwija go w kolumnę `user.name` (do 6 poziomów, konfigurowalny separator). Oznacza to, że możesz bezpośrednio przetwarzać rzeczywiste dane biznesowe o złożonej zagnieżdżonej strukturze, takie jak GitHub API, Stripe API, Notion API, bez wstępnego spłaszczania przez jq / lodash.

Kolejnym wyróżnikiem jest „hak niestandardowej klasy CSS": narzędzie nie tylko generuje style wbudowane, ale także pozwala wstrzykiwać dowolny ciąg klasy do tagu `<table>`. To pozwala użytkownikom głównych frameworków CSS, takich jak Tailwind / Bootstrap / Bulma / DaisyUI, bezpośrednio ponownie wykorzystać HTML generowany przez to narzędzie i natychmiast uzyskać styl projektu spójny z projektem, bez ręcznej edycji CSS.

Przypadki użycia

  • Programowanie front-end: szybkie renderowanie danych JSON z API do tabeli HTML do osadzania w panelach administracyjnych lub stronach dokumentacji
  • Projekty Tailwind / Bootstrap: wprowadź klasy Tailwind lub Bootstrap bezpośrednio w polu klasy tabeli dla bezproblemowej integracji z istniejącym systemem stylów
  • Responsywne strony: domyślne opakowanie z poziomym przewijaniem zapobiega psuciu układu na urządzeniach mobilnych
  • Wizualizacja danych: wklejanie stylizowanych tabel do blogów, dokumentacji, Confluence, Notion i wszelkich platform obsługujących HTML
  • Generowanie raportów: szybka konwersja danych JSON z backendu na raporty HTML do wysyłki e-mailem do interesariuszy biznesowych
  • Prototypowanie front-end: podgląd stylu tabel z prawdziwymi danymi na etapie projektowania w celu uzgodnienia z produktem i designem
  • Systemy CMS: tworzenie statycznych fragmentów tabel HTML dla WordPress, Drupal i innych CMS, unikając złożoności silników szablonów
  • Testowanie i debugowanie: wklej wyjście JSON.stringify z konsoli przeglądarki, aby szybko podejrzeć dwuwymiarową strukturę złożonych zagnieżdżonych danych
  • Szablony e-mail: wbuduj tabelę HTML w e-maile HTML (przetestuj kompatybilność z Outlookiem)
  • Dokumentacja API: osadzanie tabel HTML w Markdown, Swagger, Redoc zamiast domyślnych przykładów JSON
  • Scenariusze edukacyjne: konwersja zagnieżdżonych zadań JSON z kursów struktur danych na tabele do zbiorczego oceniania
  • Raporty czyszczenia danych: konwersja zagnieżdżonego JSON z eksportów bazy danych na tabele przez tryb spłaszczania dla łatwego porównania pól

Jak Używać

  1. Wklej tablicę JSON (zalecane) lub pojedynczy obiekt w lewym edytorze, albo kliknij „Sample" aby załadować 3 przykłady produktów, albo „Upload" aby załadować plik .json / .txt
  2. Wybierz tryb obsługi zagnieżdżenia na pasku narzędzi (zalecane: „Spłaszczanie"). Zagnieżdżone obiekty automatycznie rozwiną się w klucze kropkowe jak `user.name`
  3. Kliknij przycisk „Convert" (lub naciśnij Enter), aby uruchomić konwersję. Wprowadzanie jest chronione 500 ms debounce
  4. Przejdź do zakładki Code po prawej, aby zobaczyć kod tabeli HTML z podświetlaniem, lub do zakładki Preview aby zobaczyć renderowanie iframe w czasie rzeczywistym
  5. Zaznacz opcje stylów na pasku narzędzi (zebra / obramowanie / podświetlenie / kompakt / responsywność), wprowadź niestandardową klasę tabeli, ustaw tekst zastępczy null — podgląd aktualizuje się natychmiast
  6. Gdy gotowe, kliknij „Copy" aby skopiować kod HTML lub „Download" aby pobrać jako table.html. Aby zresetować, kliknij Reset

Funkcje

  • Automatyczne spłaszczanie zagnieżdżonych obiektów: rekurencyjnie rozwija `{user:{name,age}}` na klucze `user.name`, `user.age` (konfigurowalny separator), bez skryptów
  • Trzy tryby obsługi zagnieżdżenia: Spłaszczanie (zalecane, do 6 poziomów) / Klucze najwyższego poziomu (zagnieżdżony obiekt jako jedna kolumna) / Ciąg (zagnieżdżony obiekt jako ciąg JSON)
  • Hak niestandardowej klasy CSS: wstrzykuje dowolny ciąg klasy do `<table>` i opcjonalnego opakowania `<div>`, bezproblemowa integracja z Tailwind / Bootstrap / Bulma
  • Responsywne przewijanie poziome: domyślnie zewnętrzne opakowanie `overflow-x:auto`, poziomy pasek przewijania pojawia się automatycznie na wąskich ekranach
  • 6 przełączników stylów wizualnych: zebra, obramowanie, podświetlenie wierszy, tryb kompaktowy, kolumna indeksu (#), podpis tabeli — natychmiastowe zastosowanie
  • Podwójne zakładki Code + iframe: Code pokazuje HTML z podświetlaniem, Preview renderuje rzeczywistą tabelę w piaskownicy iframe w czasie rzeczywistym
  • Podświetlanie według typu: null — szara kursywa (konfigurowalny tekst zastępczy), wartości logiczne — zielony/czerwony, liczby — niebieski, zagnieżdżone obiekty — pełny JSON po najechaniu
  • Ochrona limitu wierszy: domyślnie 1000 wierszy (1-10000), automatyczne obcięcie z powiadomieniem „Obcięto" zapobiegające opóźnieniom przeglądarki
  • Statystyki generacji: prawy panel pokazuje „Wygenerowano X wierszy × Y kolumn" + znacznik obcięcia w czasie rzeczywistym
  • Kopiowanie / pobieranie jednym kliknięciem: w trybie Code — kopiowanie HTML do schowka lub pobranie jako table.html
  • Dane przykładowe + przesyłanie plików: 3 wbudowane przykłady produktów (Laptop / Mouse / Desk Chair) jednym kliknięciem, drag-and-drop plików .json / .txt
  • Reset jednym kliknięciem: przycisk Reset na pasku narzędzi natychmiast przywraca wszystkie 14 ustawień do domyślnych
  • Historia lokalna: localStorage przechowuje ostatnie 200 wprowadzonych danych, odzyskiwane po odświeżeniu lub przypadkowym zamknięciu
  • W pełni lokalne przetwarzanie w przeglądarce: całe parsowanie JSON, generowanie HTML, kopiowanie i pobieranie — w przeglądarce, bez wysyłania na serwer

Przykłady kodu

JavaScript: spłaszczanie zagnieżdżenia + integracja z klasami Tailwind

javascript

Najczęstszy przypadek użycia: wywołanie GitHub API, spłaszczenie zagnieżdżonych obiektów na klucze kropkowe, a następnie integracja z klasami Tailwind w projekcie.

// 1) Wywołanie GitHub API w celu pobrania listy użytkowników
async function fetchUsers() {
  const res = await fetch('https://api.github.com/users?per_page=10');
  return await res.json();
}

// 2) Funkcja spłaszczania zagnieżdżenia (równoważna logice narzędzia)
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) Konwersja spłaszczonych danych na tabelę HTML z wstrzykiwaniem klas 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) Wstrzyknięcie do strony
const users = await fetchUsers();
const html = generateHtmlTable(users);
document.getElementById('table-container').innerHTML = html;
console.log('Wygenerowano ' + users.length + ' wierszy, ' + (Object.keys(flattenObject(users[0])).length) + ' kolumn');

Python: zagnieżdżony JSON do tabeli HTML we Flasku (bez zależności front-end)

python

Podczas renderowania szablonów backendu można używać wbudowanych bibliotek Pythona do generowania tej samej tabeli HTML, obsługując spłaszczanie i wstrzykiwanie klas.

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):
    """Rekurencyjnie spłaszcza zagnieżdżone obiekty"""
    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>Brak danych</p>"

    # Obcinanie wierszy
    truncated = False
    if len(data) > max_rows:
        data = data[:max_rows]
        truncated = True

    # Spłaszczanie każdego wiersza
    flat_rows = [flatten(row) for row in data]

    # Zbieranie wszystkich nazw kolumn (set do deduplikacji, zachowując kolejność wstawiania)
    columns = []
    for row in flat_rows:
        for k in row.keys():
            if k not in columns:
                columns.append(k)

    # Generowanie thead
    thead = "".join(f'<th class="px-4 py-2 text-left bg-gray-100">{c}</th>' for c in columns)

    # Generowanie wierszy tabeli
    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">Dane obcięte do pierwszych {max_rows} wierszy</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)

Wiersz poleceń: spłaszczanie przez jq + generowanie statycznego raportu HTML

bash

Scenariusz operacyjny: agregacja zagnieżdżonych logów JSON za pomocą jq, a następnie wklejenie do tego narzędzia w celu wygenerowania raportu HTML z klasami Tailwind.

# 1) Użyj jq do agregacji i spłaszczenia zagnieżdżonych logów na klucze kropkowe
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) Wklej stats.json do tego narzędzia
#    Wybierz tryb „Spłaszczanie (zalecane)" na pasku
#    Zaznacz „Zebra + Responsywne opakowanie + Obramowanie"
#    W polu nazwy klasy tabeli: min-w-full text-sm border-collapse
#    Ustaw tekst zastępczy null: - (brakujące pola wyświetlane jako -)
#    Ustaw podpis: Statystyki błędów produkcyjnych 2026-07
#    Kliknij Convert i pobierz table.html

# 3) Prześlij do statycznej witryny S3 / OSS
aws s3 cp table.html s3://my-bucket/reports/2026-07.html --acl public-read

# Lub osadź w dokumentacji Confluence / Notion / VuePress
sed -i '' 's/min-w-full/min-w-full shadow-md/g' table.html

# Lub wyślij jako e-mail HTML
mutt -e "set content_type=text/html" -s "Dziennik błędów 2026-07" your@email.com < table.html

Często Zadawane Pytania

Jak przekonwertować dane JSON na tabelę HTML?

Wklej tablicę JSON (każdy element jest obiektem) w lewe pole wejściowe, kliknij przycisk „Convert" na pasku narzędzi. Zakładka Code po prawej pokaże kod tabeli HTML z podświetlaniem, zakładka Preview pokaże renderowanie iframe w czasie rzeczywistym. Kliknij „Copy", aby wkleić do dowolnej strony HTML.

Czy zagnieżdżone obiekty JSON można przekonwertować na tabelę HTML?

Tak. Narzędzie ma wbudowany tryb spłaszczania, który rekurencyjnie rozwija `{user:{name:'Alice',age:30}}` na kolumny `user.name` i `user.age` do głębokości 6 poziomów. Można też przełączyć na tryb „Klucze najwyższego poziomu" (zagnieżdżony obiekt jako ciąg JSON w jednej kolumnie) lub „Ciąg" (wszystko jako ciąg).

Czy mogę zmienić separator kluczy po spłaszczeniu?

Domyślny separator to `.` (daje `user.name`), zgodny z konwencjami JavaScript / MongoDB / Lodash. Jeśli potrzebujesz `user_name` lub `user/name`, dostosuj w polu „Separator" (widoczne dla zaawansowanych użytkowników).

Czy mogę dostosować styl wygenerowanej tabeli HTML?

Narzędzie oferuje trzy sposoby dostosowania stylu: ① 6 przełączników wizualnych na pasku narzędzi (zebra, obramowanie, podświetlenie, kompakt, indeks, podpis) działają natychmiastowo; ② wpisz niestandardową klasę w polu „nazwa klasy tabeli" (np. Tailwind `min-w-full border-collapse`) — zostanie wstrzyknięta do `<table class="...">`; ③ edytuj wygenerowany HTML ręcznie przed użyciem.

Czy obsługuje Tailwind / Bootstrap?

Tak. Wpisz klasy Tailwind (np. `min-w-full border-collapse text-sm`) lub Bootstrap (np. `table table-striped table-hover table-bordered`) w polu „nazwa klasy tabeli" — narzędzie wstrzyknie te klasy do tagu `<table>`. Uwaga: wbudowane style narzędzia mają najwyższy priorytet i nadpiszą niektóre style Tailwind (tło, padding). Zalecamy wyłączenie odpowiedniej opcji (np. zebry) przed użyciem Tailwind.

Jaka jest różnica między zakładkami Code i Preview?

Zakładka Code wyświetla kod źródłowy HTML z podświetlaniem składni, wygodne do kopiowania i edycji. Zakładka Preview renderuje rzeczywistą tabelę w piaskownicy iframe z efektem WYSIWYG. Zawartość jest identyczna — można szybko przełączać się między „zobacz kod" a „zobacz wynik".

Czy wygenerowany HTML obsługuje mobilną responsywność?

Tak. Narzędzie domyślnie włącza opcję „Responsywne opakowanie", która opakowuje `<table>` w kontener `<div style="overflow-x:auto;max-width:100%;">`. Gdy szerokość ekranu jest mniejsza niż szerokość tabeli, kontener automatycznie pokazuje poziomy pasek przewijania, nie psując układu strony. Tę opcję można wyłączyć na pasku narzędzi.

Jak wyświetlane są null, wartości logiczne i liczby w komórkach?

Narzędzie stosuje podświetlanie według typu: null — szara kursywa (tekst zastępczy konfigurowalny: `N/A`, `-` itd.), wartość logiczna true — zielony, false — czerwony, liczby — niebieski, zwykłe ciągi — jak są. Zagnieżdżone obiekty w trybie spłaszczania są wyodrębniane ścieżką, w innych trybach konwertowane na ciąg JSON i obcinane do 50 znaków.

Czy wygenerowany kod HTML można użyć bezpośrednio na stronie?

Tak. Wyjście to standardowa struktura tabeli W3C HTML5 (`<table>` / `<thead>` / `<tbody>` / `<caption>`), CSS wyprowadzany jako wbudowany style. Można wkleić do dowolnej strony HTML bez zależności od zewnętrznych CSS lub JS. Można też pobrać jako plik table.html.

Jaka jest różnica między JSON do HTML a JSON do CSV?

Tabela HTML to stylizowany format wizualny, idealny do osadzania na stronach. CSV to format danych tekstowych, idealny do importu do Excela / Pandas / baz danych. Oba są generowane z tych samych danych JSON. Zalecamy najpierw podgląd układu w tym narzędziu, a następnie użycie narzędzia JSON do CSV do eksportu wersji danych.

Jak zmienić tekst nagłówka tabeli?

Narzędzie automatycznie używa kluczy pierwszego poziomu obiektu JSON jako zawartości `<th>` (w trybie spłaszczania — pełna ścieżka kropkowa, np. `user.name`). Jeśli chcesz, aby nagłówek wyświetlał inny tekst (np. polski), masz trzy sposoby: ① zmień nazwy kluczy w źródłowym JSON; ② po wygenerowaniu ręcznie edytuj zawartość `<th>...</th>` w zakładce Code; ③ użyj seda do zbiorczej zamiany.

Pobrany table.html jest pusty po otwarciu w przeglądarce. Co robić?

Pobrany table.html zawiera tylko strukturę tagu `<table>` (ewentualnie z opakowaniem `<div>`), bez pełnego szkieletu HTML (`<html>` / `<head>` / `<body>`). Został zaprojektowany jako fragment do osadzania. Możesz ręcznie dodać szkielet za pomocą narzędzia formatującego HTML lub wkleić bezpośrednio w odpowiednie miejsce w projekcie.

Strona zacina się przy generowaniu 1000+ wierszy. Co robić?

Narzędzie domyślnie ustawia limit 1000 wierszy, przy przekroczeniu wyświetla „Obcięto". Jeśli naprawdę potrzebujesz 5000 wierszy, podnieś „Maks. wierszy" na pasku do 10000, ale zalecamy: ① podział na strony (50 wierszy na stronę); ② IntersectionObserver do wirtualnego przewijania; ③ dedykowane biblioteki jak TanStack Table / AG Grid.

Czy dane są przesyłane na serwer? Jak bezpieczna jest prywatność?

Wszystko działa lokalnie w przeglądarce. Całe parsowanie JSON, generowanie HTML, kopiowanie i pobieranie odbywa się w przeglądarce przez JavaScript, a odczyt plików — tylko przez lokalny FileReader. Nic nie jest wysyłane na żaden serwer. Możesz bezpiecznie używać z poufnymi odpowiedziami API i wewnętrznymi polami — zamknięcie strony usuwa wszystkie dane.

Rozwiązywanie problemów

Powiadomienie: „Wprowadź dane JSON" lub podobny błąd

Lewe pole wejściowe jest puste lub zawiera tylko białe znaki. Upewnij się, że wkleiłeś prawidłowy JSON, kliknąłeś „Sample" aby załadować dane przykładowe, lub „Upload" aby wybrać plik .json / .txt.

Powiadomienie: „Unexpected token ... in JSON at position N"

Nieprawidłowy format JSON. Typowe przyczyny: ① dodatkowy przecinek na końcu (np. [{},{},]); ② pojedyncze cudzysłowy zamiast podwójnych; ③ składnia obiektu JS (np. {key: value}) zamiast JSON ({"key": "value"}). Użyj narzędzia formatującego JSON do walidacji i naprawy.

Wygenerowana tabela ma tylko nagłówek, bez wierszy danych

Dane JSON to pusta tablica [] lub pusty obiekt {}. Narzędzie zwraca komentarz `<!-- No valid objects found -->` dla pustych tablic. Dodaj co najmniej jeden obiekt do źródłowego JSON.

Nazwy kolumn są zbyt długie w trybie spłaszczania (np. user.profile.address.city.country.code)

Przy zbyt głębokim zagnieżdżeniu zalecamy: ① przełączenie na tryb „Klucze najwyższego poziomu" (tylko pola najwyższego poziomu, zagnieżdżone obiekty jako kolumna JSON); ② zmianę struktury źródłowego JSON w celu zmniejszenia zagnieżdżenia; ③ użycie przycisku Reset na pasku narzędzi w celu przywrócenia domyślnych ustawień spłaszczania.

Wstrzykiwanie klas Tailwind nie daje efektu

Narzędzie domyślnie wyprowadza style wbudowane (padding, tło), które nadpisują klasy użytkowe Tailwind o tej samej nazwie. Sugestie: ① wyłącz odpowiednią opcję stylu na pasku (np. zebrę) przed użyciem Tailwind; ② lub użyj PostCSS, aby usunąć atrybuty inline style z wygenerowanego HTML.

Wysokość tabeli jest ściśnięta wewnątrz responsywnego opakowania

„Responsywne opakowanie" domyślnie dopasowuje wysokość zewnętrznego div do tabeli. Jeśli kontener nadrzędny jest układem flex bez określonej wysokości, tabela podrzędna może być ściśnięta. Dodaj min-h-0 do kontenera nadrzędnego lub ustaw wysokość tabeli.

Pobrany table.html jest pusty po otwarciu w przeglądarce

Pobrany plik zawiera tylko fragment <table> (z ewentualnym opakowaniem <div>), bez pełnego szkieletu HTML (<!doctype html> / <html> / <head> / <body>). Został zaprojektowany do łatwego osadzania. Użyj narzędzia formatującego HTML, aby dodać pełny szkielet, lub wklej bezpośrednio w odpowiednie miejsce projektu.

Polskie nagłówki tabeli wyświetlają się jako krzaczki

Klucze w źródłowym JSON zawierają polskie znaki — upewnij się, że plik źródłowy jest w kodowaniu UTF-8. Jeśli JSON jest kopiowany z Excela, może być w GBK; użyj narzędzia do konwersji kodowania, aby przekonwertować na UTF-8 przed wklejeniem.

Chcę zbiorczo modyfikować wygenerowaną tabelę (np. zmienić logo firmy / kolor)

Po wygenerowaniu skopiuj HTML z zakładki Code po prawej i użyj seda / PostCSS / własnego skryptu do zbiorczej zamiany atrybutów stylu. Typowa komenda: sed -i '' 's/#f9fafb/#your-color/g' table.html.

Strona zacina się przy generowaniu 1000+ wierszy

Narzędzie domyślnie ustawia ochronę limitu 1000 wierszy. Możesz dostosować maxRows na pasku narzędzi do 10000, ale przeglądarki wyraźnie tracą wydajność na ogromnych DOM (>1000 węzłów). Sugerujemy: ① podział na strony (50 wierszy na stronę); ② IntersectionObserver do wirtualnego przewijania; ③ dedykowane biblioteki jak TanStack Table / AG Grid.

Historia została utracona

Historia jest przechowywana w localStorage przeglądarki. Czyszczenie danych przeglądarki / przełączanie na tryb incognito / korzystanie z innej przeglądarki spowoduje utratę historii. Narzędzie nie przesyła historii na żaden serwer, więc nie można jej synchronizować między urządzeniami.

Nie widzę surowych danych po limicie wierszy

Narzędzie domyślnie ustawia maxRows=1000, przy przekroczeniu wiersze są obcinane. Jeśli twoje dane źródłowe mają > 1000 wierszy, ale potrzebujesz tylko pierwszych N do podglądu, ustaw maxRows mniejsze (np. 100) dla szybszych wyników. Dla pełnych danych sugerujemy bezpośrednie przetwarzanie skryptami Pythona / Node.js.

Słownik

Tabela HTML (HTML Table)
Standardowy element wyświetlania danych strukturalnych W3C, składający się z semantycznych tagów table / thead / tbody / tr / th / td / caption. Kod generowany przez to narzędzie ściśle przestrzega tej struktury.
Tablica JSON
Kolekcja obiektów w nawiasach kwadratowych [...]. Narzędzie używa każdego obiektu tablicy jako wiersza tabeli; pusta tablica nie generuje tabeli (wyświetlane jest powiadomienie).
Obiekt JSON
Kolekcja par klucz-wartość w nawiasach klamrowych {}. Narzędzie używa każdego klucza obiektu jako nagłówka tabeli, a wartości jako komórki; pojedynczy obiekt jest automatycznie opakowywany jako tabela jednowierszowa.
Spłaszczanie (Flatten)
Rekurencyjne rozwijanie zagnieżdżonych obiektów na płaskie klucze kropkowe, np. {user:{name:'A'}} → 'user.name'. Narzędzie obsługuje automatyczne spłaszczanie do 6 poziomów z konfigurowalnym separatorem.
thead / tbody
Dwa semantyczne podziały tabeli HTML: thead opakowuje wiersz nagłówka (th), tbody opakowuje wiersze danych (td). Kod generowany przez narzędzie ściśle rozróżnia te dwie części.
Caption (Podpis)
Tag tytułu tabeli, znajdujący się w pierwszym wierszu wewnątrz tabeli. Narzędzie obsługuje niestandardowy tekst podpisu; po włączeniu określony tytuł wyświetla się nad tabelą, co jest przydatne dla SEO i dostępności.
Zebra (Zebra Striping)
Wzorzec wizualny, w którym wiersze nieparzyste i parzyste naprzemiennie używają różnych kolorów tła, zwykle #fff / #f9fafb. Narzędzie włącza go przez pole wyboru „Zebra", znacznie poprawiając czytelność długich tabel.
Styl wbudowany (Inline Style)
CSS zapisywany bezpośrednio przez atrybut style tagu HTML, zamiast odwoływania się do zewnętrznego arkusza stylów. Narzędzie domyślnie wyprowadza wszystkie style jako wbudowany style, więc kod można użyć bez dodatkowych plików CSS.
Hak klasy CSS
Wyróżniająca cecha narzędzia: wstrzykiwanie dowolnego ciągu klasy (np. klasy Tailwind) do tagu `<table>` dla bezproblemowej integracji z istniejącymi frameworkami CSS. To kluczowa przewaga nad konkurentami.
iframe sandbox
Bezpieczny tryb piaskownicy tagu HTML iframe, który może ograniczać wykonywanie skryptów i wysyłanie formularzy. Narzędzie używa iframe z sandbox="allow-same-origin" do podglądu wygenerowanego HTML, zapobiegając przypadkowemu wykonaniu skryptu.
Podświetlanie według typu
Wyróżniająca cecha narzędzia: stosowanie różnych kolorów w zależności od typu JS wartości komórki (null / boolean / number / object / string), czyniąc debugowanie danych API bardziej intuicyjnym.
Historia localStorage
Lokalny magazyn klucz-wartość dostarczany przez przeglądarkę (pojemność ~5-10MB). Narzędzie używa localStorage do trwałego zapisywania ostatnich 200 wprowadzonych danych, które można szybko przywrócić po odświeżeniu lub przypadkowym zamknięciu.
Responsywne opakowanie (Responsive Wrapper)
Opakowanie tabeli w zewnętrzny `<div style="overflow-x:auto;max-width:100%;">`, aby na wąskich ekranach automatycznie pojawiał się poziomy pasek przewijania. Włączone domyślnie, można wyłączyć na pasku narzędzi.
Debounce
Technika optymalizacji wydajności front-end: łączenie wywołań zwrotnych zdarzeń o wysokiej częstotliwości (np. wprowadzanie) w jedno wykonanie po ostatnim wyzwoleniu. Narzędzie ustawia 500 ms debounce, aby uniknąć opóźnień przy parsowaniu dużych plików.
W3C HTML5
Specyfikacja standardu HTML opracowana przez World Wide Web Consortium (W3C). Kod generowany przez narzędzie jest zgodny ze specyfikacją HTML5 i renderuje się poprawnie we wszystkich nowoczesnych przeglądarkach.

Porównanie trzech trybów obsługi zagnieżdżenia

Pasek narzędzi oferuje trzy tryby dla różnych scenariuszy zagnieżdżenia. Wybierz na podstawie złożoności struktury JSON:

TrybZachowaniePrzykładowa kolumnaScenariusz
Spłaszczanie (zalecane)Rekurencyjnie rozwija zagnieżdżone obiekty na klucze kropkowe (głębokość ≤ 6)user.name / user.tags.0Zagnieżdżone struktury prawdziwych API (GitHub / Stripe / Notion); każde pole w osobnej kolumnie
Klucze najwyższego poziomuBierze tylko klucze pierwszego poziomu; zagnieżdżone obiekty / tablice stają się ciągiem JSON w jednej kolumnieuser / tagsNiestabilna lub zbyt głęboka (>6 poziomów) zagnieżdżona struktura; potrzebny tylko przegląd pól najwyższego poziomu
CiągWszystkie wartości są traktowane jako ciągi; zagnieżdżone obiekty JSON.stringify bezpośredniouser (jako JSON-blob)Debugowanie: zachowaj oryginalną strukturę JSON do wizualnej inspekcji

Ściągawka 14 opcji paska narzędzi

Wszystkie 14 konfigurowalnych opcji paska narzędzi i ich wizualne różnice, dla szybkiego wyboru kombinacji:

OpcjaTypEfekt wizualny / zachowanie
includeIndexcheckboxDodaje kolumnę numeracji # po lewej (zaczynając od 1)
stripedcheckboxNaprzemienne tło wierszy nieparzystych/parzystych (biały / #f9fafb)
borderedcheckboxSzara ramka 1px wokół komórek + linia akcentująca 2px pod nagłówkiem
hovercheckboxJasnoszare tło #f9fafb przy najechaniu na wiersz
compactcheckboxPadding komórek zmniejszony z 10px×14px do 6px×8px
responsivecheckboxOpakowanie overflow-x:auto, przewijanie poziome na wąskich ekranach
flattenModeselectZagnieżdżanie: Spłaszczanie (zalecane) / Klucze najwyższego poziomu / Ciąg
tableClasstextNiestandardowa klasa CSS wstrzykiwana do <table class="...">
nullPlaceholdertextTekst dla komórek null / undefined (puste pokazuje 'null')
maxRowsnumberMaks. liczba wierszy (1-10000), automatyczne obcięcie z powiadomieniem
captiontextNiestandardowy tekst tytułu nad tabelą (caption-side: top)
indexHeadertextTekst nagłówka kolumny indeksu (domyślnie #)
flattenSeparatortextSeparator kluczy w trybie spłaszczania (domyślnie ., można _ / - itd.)
wrapperClasstextNiestandardowa klasa CSS dla responsywnego opakowania <div> (zaawansowane)

Ściągawka reguł podświetlania komórek według typu

Narzędzie automatycznie stosuje różne kolory w zależności od typu JavaScript wartości JSON dla szybkiego rozpoznawania typu danych:

Typ JSWykrywanieStosowany stylPrzykładowe wyjście
null / undefinedval === null || val === undefinedcolor: #9ca3af; font-style: italic; pokazuje tekst zastępczy (konfigurowalny)<span style="color:#9ca3af;font-style:italic;">N/A</span>
boolean (true)typeof val === 'boolean' && valcolor: #059669;<span style="color:#059669;">true</span>
boolean (false)typeof val === 'boolean' && !valcolor: #dc2626;<span style="color:#dc2626;">false</span>
numbertypeof val === 'number'color: #2563eb;<span style="color:#2563eb;">42</span>
object / array (tryb spłaszczania)type === 'object' + wyodrębnianie ścieżką w trybie spłaszczaniaZagnieżdżone obiekty wyodrębniane ścieżką do wartości atomowychuser.name → 'Alice'
object / array (inne tryby)typeof val === 'object'JSON.stringify z escapowaniem i obcięciem do 50 znaków, fioletowa kursywa + title pokazuje pełny JSON<span style="color:#7c3aed;font-style:italic;" title="...">{"id":1…</span>
stringw przeciwnym razieDomyślny kolor tekstu #4b5563Jennifer Martinez

Privacy & Security

To narzędzie JSON do HTML wykonuje całe parsowanie JSON, spłaszczanie zagnieżdżenia, generowanie HTML, kopiowanie i pobieranie wyłącznie w Twojej przeglądarce za pomocą JavaScript. Wprowadzone dane JSON i wygenerowany kod HTML nie są przesyłane na żaden serwer, nie są logowane, buforowane ani przechowywane w chmurze. Możesz bezpiecznie używać z poufnymi odpowiedziami API i wewnętrznymi polami biznesowymi — zamknięcie strony usuwa wszystkie dane.

Authoritative References