Spłaszczanie JSON

Separator:
Maks. głębokość:(0=unlimited)

Zamieniaj zagnieżdżony JSON na płaskie klucze z separatorem i w razie potrzeby odtwarzaj oryginalną strukturę. Całe przetwarzanie odbywa się lokalnie w przeglądarce.

Powiązane Rekomendacje

Przypadki użycia

  • Zapytania i aktualizacje MongoDB: używaj płaskich kluczy zamiast ręcznego wpisywania pełnych ścieżek
  • Eksport do CSV i Excela: zamieniaj wielopoziomowy JSON na kolumny łatwe do obróbki tabelarycznej
  • Przygotowanie danych do Elasticsearch: upraszczaj głęboko zagnieżdżone dokumenty przed indeksowaniem
  • Debugowanie API: porównuj pola żądania i odpowiedzi w jednym płaskim widoku
  • Przygotowanie konfiguracji i zmiennych środowiskowych: rozwijaj zagnieżdżone ustawienia z package.json i settings.json

Jak Używać

  1. Wklej JSON do lewego pola albo prześlij lokalny plik .json
  2. Wybierz tryb flatten lub unflatten i ustaw separator, tablice oraz maksymalną głębokość
  3. Sprawdź wynik po prawej stronie razem ze statystyką liczby kluczy i głębokości
  4. Skopiuj rezultat albo pobierz go jako plik .json

Funkcje

  • Konwersja w obie strony: obsługuje zarówno flatten, jak i unflatten bez ręcznej przebudowy danych
  • Własne separatory: używaj kropek, podkreśleń, ukośników lub innego znaku zależnie od docelowego systemu
  • Elastyczna obsługa tablic: rozwiń elementy do kluczy indeksowanych albo zachowaj całą tablicę jako jedną wartość
  • Limit głębokości: zatrzymuje rozwijanie na wybranym poziomie i chroni przed zbyt długimi nazwami kluczy
  • Lokalne przetwarzanie: JSON nie opuszcza przeglądarki, więc dane nie są wysyłane na serwer
  • Wygodny workflow: upload pliku .json, dane przykładowe, kopiowanie wyniku i pobieranie gotowego pliku

Przykłady kodu

Spłaszczanie JSON w JavaScript

javascript
function flatten(obj, prefix = '', sep = '.') {
  return Object.entries(obj).reduce((acc, [key, value]) => {
    const newKey = prefix ? `${prefix}${sep}${key}` : key;
    if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
      Object.assign(acc, flatten(value, newKey, sep));
    } else {
      acc[newKey] = value;
    }
    return acc;
  }, {});
}

flatten({ user: { name: 'Alice', contact: { email: 'a@x.com' } } });
// => { 'user.name': 'Alice', 'user.contact.email': 'a@x.com' }

Spłaszczanie JSON w Pythonie

python
def flatten(obj, parent_key='', sep='.'):
    items = {}
    for key, value in obj.items():
        new_key = f"{parent_key}{sep}{key}" if parent_key else key
        if isinstance(value, dict):
            items.update(flatten(value, new_key, sep))
        else:
            items[new_key] = value
    return items

import json
print(json.dumps(flatten({'user': {'name': 'Alice'}}), indent=2))
# => {"user.name": "Alice"}

Spłaszczanie JSON przez jq w terminalu

bash
# Zamień zagnieżdżony JSON na płaską strukturę z kluczami rozdzielanymi kropką
jq '[paths(scalars) as $p | {"key": $p | join("."), "value": getpath($p)}] | from_entries' data.json

# Przywróć płaski JSON do struktury zagnieżdżonej
# Użyj jq 1.7+ z zewnętrznym filtrem albo trybu unflatten w tym narzędziu

Często Zadawane Pytania

Czym jest spłaszczanie JSON i kiedy się przydaje?

Spłaszczanie JSON zamienia zagnieżdżone obiekty i tablice na płaskie pary klucz-wartość. Jest przydatne przy zapytaniach MongoDB, eksporcie do CSV, indeksowaniu w Elasticsearch, pracy ze zmiennymi środowiskowymi i porównywaniu pól API.

Czy można przywrócić oryginalną zagnieżdżoną strukturę?

Tak. Jeśli użyjesz tego samego separatora, narzędzie odtworzy obiekty i tablice z płaskich kluczy. Kolejne klucze numeryczne są automatycznie rozpoznawane jako tablice.

Czy mogę zmienić separator i sposób obsługi tablic?

Tak. Możesz wybrać kropkę, podkreślenie, ukośnik, podwójne podkreślenie lub własny separator. Tablice da się rozwijać do kluczy typu `items.0` albo zachować w całości.

Czy przetwarzanie JSON online jest bezpieczne?

Tak. Wszystkie operacje są wykonywane lokalnie w przeglądarce, więc JSON nie jest przesyłany na zewnętrzny serwer.

Jak używać spłaszczonych kluczy w MongoDB?

MongoDB odwołuje się do pól zagnieżdżonych przez notację kropkową. Klucze wygenerowane przez to narzędzie możesz bezpośrednio wykorzystać w `find`, `update` i pipeline'ach agregacji.

Czy wynik nadaje się do CSV i Excela?

Tak. Po spłaszczeniu wszystkie pola znajdują się na jednym poziomie, więc łatwo przekazać wynik do JSON-to-CSV, Excela albo Pandas jako zestaw kolumn.

Co jeśli oryginalny klucz już zawiera kropkę lub separator?

Wtedy podczas odtwarzania mogą pojawić się konflikty poziomów. Najlepiej użyć innego separatora albo wcześniej zescapować takie klucze.

Czy narzędzie poradzi sobie z dużym JSON-em?

Typowe odpowiedzi API i pliki konfiguracyjne działają bez problemu. Dla bardzo dużych danych lepiej podzielić plik albo skorzystać z lokalnego CLI, np. `jq`.

Rozwiązywanie problemów

Narzędzie zgłasza, że wejście nie jest poprawnym JSON-em

Najczęściej chodzi o błąd składni: brakujące cudzysłowy, dodatkowe przecinki, niezamykanie nawiasów albo wartości typu True/False. Najpierw sprawdź tekst w formaterze JSON.

Po unflatten struktura odtwarza się niepoprawnie

Prawdopodobnie oryginalne klucze już zawierały wybrany separator. Zmień separator albo wcześniej zescapuj kolidujące klucze.

Po rozwinięciu tablic CSV robi się zbyt szeroki

Rozwijanie tablic po indeksach zamienia każdą gałąź w osobne pola. Jeśli chcesz bardziej zwartej tabeli, zachowaj tablicę jako jedną wartość.

Duży JSON spowalnia przeglądarkę

Bardzo duże pliki JSON zużywają sporo pamięci. Podziel dane na mniejsze części albo użyj lokalnych narzędzi, takich jak `jq`, Python czy Node.js.