JSON

JSON Path Extractor / Flatten

Spłaszczanie (Flatten) zagnieżdżonego JSON do płaskiej listy "ścieżka: wartość" i odtwarzanie z powrotem struktury zagnieżdżonej (Unflatten). Notacja ścieżki jest taka sama jak w JSONPath/JSON Diff: store.book[0].price.

Deeply nested JSON is hard to compare or iterate over programmatically. Flatten unrolls such a structure into a flat list of "path: value" pairs (e.g. store.book[0].price: 12.99), and Unflatten rebuilds it.

How to use it

Common uses

Things to keep in mind

Array index notation varies between libraries — this tool uses items[0], though some write items.0 without brackets.

Unflatten requires that paths don't conflict with each other (e.g. one and one.two at the same time) — otherwise the structure can't be unambiguously rebuilt.

Artykuł o tym narzędziu: JSON Flatten: zamiana zagnieżdżonej struktury na płaską listę

Najczęstsze pytania

Co właściwie robi "spłaszczenie" (flatten) obiektu JSON?

Zamienia zagnieżdżone obiekty i tablice w obiekt jednopoziomowy z kluczami w notacji kropkowej lub nawiasowej (jak user.address.city czy items[0].id), ułatwiając odczyt głęboko zagnieżdżonych danych jako płaskiej tabeli lub import do arkuszy kalkulacyjnych.

Czy spłaszczony JSON można przekonwertować z powrotem do oryginalnej zagnieżdżonej formy?

Tak, o ile notacja kluczy jest spójna — odwrócenie procesu odtwarza oryginalną zagnieżdżoną strukturę, dzieląc każdą ścieżkę klucza z powrotem na obiekty i tablice.

Czy spłaszczanie traci jakiekolwiek informacje z oryginalnego JSON?

Nie. Każda wartość jest zachowywana; zmienia się tylko struktura, ponieważ każda unikalna zagnieżdżona ścieżka staje się swoim własnym płaskim kluczem.

Co się stanie, jeśli rzeczywisty klucz sam zawiera kropkę?

To sytuacja niejednoznaczna: ścieżka user.name może oznaczać zarówno zagnieżdżony obiekt {"user": {"name": ...}}, jak i płaski klucz {"user.name": ...}. Notacja kropkowa tego nie rozróżnia, więc takich kluczy lepiej unikać lub obsługiwać osobno.

Czy format ścieżek jest taki sam we wszystkich podobnych narzędziach?

Nie. Notacja kropkowa dla obiektów (user.name) jest powszechna praktycznie wszędzie, ale zapis indeksów tablic się różni: tutaj używane jest items[0], choć niektóre biblioteki piszą items.0 bez nawiasów.

Artykuły: JSON