W tym artykule
Czym jest spłaszczanie JSON?
Spłaszczanie JSON konwertuje głęboko zagnieżdżony obiekt JSON na płaską strukturę klucz-wartość używając ścieżek z notacją kropkową. Każda wartość liścia w oryginalnym obiekcie otrzymuje unikalną ścieżkę, np. 'user.address.city', która opisuje jej pozycję w hierarchii.
Odwrotna operacja, rozpłaszczanie, pobiera ścieżki z notacją kropkową i odtwarza oryginalną zagnieżdżoną strukturę. Razem spłaszczanie i rozpłaszczanie pozwalają transformować JSON między reprezentacjami zagnieżdżonymi i płaskimi bez utraty danych.
Jak działa spłaszczanie JSON
Algorytm spłaszczania rekurencyjnie przechodzi drzewo JSON, budując ciąg ścieżki podczas zagnieżdżania się w obiekty i tablice.
- Rekurencyjne przejście — algorytm przechodzi każdy klucz w obiekcie, dodając każdy klucz do rosnącej ścieżki oddzielonej kropkami
- Notacja indeksu tablicy — elementy tablicy używają notacji nawiasowej jak 'items[0].name' dla zachowania pozycji
- Zbieranie liści — gdy osiągnięta zostanie wartość prymitywna (ciąg, liczba, boolean, null), pełna ścieżka i wartość są przechowywane jako płaska para klucz-wartość
Wypróbuj za darmo — bez rejestracji
Spłaszcz lub rozpłaszcz JSON →Kiedy używać spłaszczania JSON
Spłaszczony JSON jest przydatny, gdy musisz pracować z zagnieżdżonymi danymi w systemach obsługujących tylko płaskie struktury.
- Przechowywanie w bazie danych — przechowuj zagnieżdżone konfiguracje w płaskich tabelach klucz-wartość bez zmian schematu
- Eksport CSV — konwertuj zagnieżdżone rekordy JSON na płaskie wiersze odpowiednie do importu do arkuszy kalkulacyjnych
- Porównanie konfiguracji — spłaszcz dwa pliki konfiguracyjne i porównaj płaskie klucze, aby szybko znaleźć zmiany
Często zadawane pytania
Czy spłaszczanie zachowuje typy danych?
Tak. Wszystkie wartości prymitywne (ciągi, liczby, booleany, null) są zachowane dokładnie. Tablice stają się indeksowanymi ścieżkami, a zagnieżdżone obiekty — ścieżkami oddzielonymi kropkami. Rozpłaszczanie odtwarza oryginalne typy.
Co się dzieje przy bardzo głębokim zagnieżdżeniu?
Spłaszczacz obsługuje dowolną głębokość zagnieżdżenia. Bardzo głębokie obiekty tworzą długie ciągi ścieżek, ale nie ma limitu funkcjonalnego. Większość implementacji używa podejść iteracyjnych.
Czy mogę spłaszczyć JSON ze zduplikowanymi kluczami?
JSON nie zezwala na zduplikowane klucze na tym samym poziomie według specyfikacji. Jeśli Twój parser je akceptuje, tylko ostatnia wartość dla każdego klucza przetrwa parsowanie. Spłaszczacz pracuje na sparsowanym obiekcie, więc duplikaty są już rozwiązane.