Spłaszczanie JSON
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ć
- Wklej JSON do lewego pola albo prześlij lokalny plik .json
- Wybierz tryb flatten lub unflatten i ustaw separator, tablice oraz maksymalną głębokość
- Sprawdź wynik po prawej stronie razem ze statystyką liczby kluczy i głębokości
- 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
javascriptfunction 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
pythondef 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ędziuCzę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.
- JSON Compress
- Konwerter CSV na JSON
- JSON na CSV
- JSON Diff
- JSON Escape / Unescape
- Spłaszczanie JSON
- JSON Formatter
- Generator JSON
- Zapytanie JSONPath
- Scal JSON
- Naprawa JSON
- Walidator JSON Schema
- Sortowanie JSON
- JSON Stringify
- JSON do HTML
- JSON do Javy
- JSON na Markdown
- JSON do SQL
- JSON do TOML
- JSON do TypeScript
- XML na JSON
- Konwertuj JSON do XML
- YAML na JSON
- JSON → YAML
- JSON na Go
- JSON na Rust
- JSON to Swift
- JSON na C#
- JSON na C++
- JSON na PHP
- JSON na Python