Scalanie JSON
Połącz wiele obiektów JSON w jeden
Wejście (tablica obiektów JSON)
Scalone wyjście
Czym jest scalanie JSON?
Masz plik default.json i production.json, który nadpisuje tylko kilka ustawień — i potrzebujesz jednego scalonego wyniku. Dokładnie do tego służy to narzędzie. Scalanie JSON polega na łączeniu dwóch lub więcej obiektów w jeden. Przy scalaniu płytkim późniejsze obiekty zastępują wcześniejsze dla wspólnych kluczy. Przy scalaniu głębokim (wzorzec jak Object.assign), obiekty zagnieżdżone są rekurencyjnie łączone zamiast całkowicie zastępowane.
To narzędzie oczekuje tablicy JSON obiektów. Scala je w kolejności przy użyciu trybu płytkiego lub głębokiego. Wynikiem jest pojedynczy obiekt. Przetwarzanie odbywa się w przeglądarce.
Jak korzystać z tego narzędzia
Wprowadź tablicę JSON
Wklej tablicę JSON obiektów, np. [{"a": 1}, {"b": 2}, {"a": 3}]. Kolejność ma znaczenie: późniejsze obiekty zastępują wcześniejsze dla kolidujących kluczy. Użyj Głębokie lub Płytkie aby wybrać sposób scalania.
Sprawdź wynik
Prawy panel pokazuje scalony obiekt. W trybie płytkim {"a": 1, "b": 2} scalony z {"a": 3} daje {"a": 3, "b": 2}. W trybie głębokim obiekty zagnieżdżone są scalane rekurencyjnie.
Kopiuj lub pobierz
Użyj Kopiuj lub Pobierz aby uzyskać wynik. Do formatowania użyj Formatera JSON. Do walidacji użyj Walidatora JSON.
Kiedy scalanie JSON jest przydatne
Scalanie plików konfiguracyjnych to częsty przypadek użycia. Masz default.json i production.json; chcesz je scalić tak, aby produkcja nadpisywała tylko potrzebne klucze. Głębokie scalanie rekurencyjnie łączy zagnieżdżone wartości domyślne. W przypadku odpowiedzi API z wielu źródeł lub budowania obiektów z szablonu bazowego z nadpisaniami specyficznymi dla środowiska, scalanie daje jeden połączony obiekt. Formater JSON pomaga sformatować wynik dla czytelności.
Przykłady scalania JSON
Oto przykład scalania dwóch obiektów konfiguracji abonenta. Późniejsze obiekty zastępują wcześniejsze dla kolidujących kluczy.
Przykład: scalanie konfiguracji abonentów
Wejście (tablica obiektów do scalenia):
Scalone wyjście:
Scalanie płytkie a głębokie
Scalanie płytkie: jeśli oba obiekty mają dany klucz, wartość z późniejszego obiektu całkowicie zastępuje wcześniejszą. Obiekty zagnieżdżone nie są scalane – są zastępowane. Scalanie głębokie: obiekty zagnieżdżone są scalane rekurencyjnie. Zatem {"a": {"b": 1}} scalony z {"a": {"c": 2}} daje {"a": {"b": 1, "c": 2}} w trybie głębokim, ale {"a": {"c": 2}} w trybie płytkim. Object.assign w JavaScript wykonuje scalanie płytkie. Biblioteki takie jak Lodash merge wykonują scalanie głębokie.
Specyfikacja JSON definiuje obiekty jako nieuporządkowane kolekcje par klucz-wartość. Kolejność scalania ma znaczenie: późniejsze wartości zastępują wcześniejsze. Scalanie konfiguracji z odpowiedzi API z Postmana lub fetch, albo łączenie wartości domyślnych z nadpisaniami to częste przypadki. Formalnym standardem jest RFC 8259. Przewodnik MDN po JSON omawia parsowanie i serializację.
Często zadawane pytania
Jak scalić dwa obiekty JSON w JavaScript?
Do scalania płytkiego użyj operatora spread: {...objA, ...objB} lub Object.assign({}, objA, objB). Do scalania głębokiego użyj biblioteki jak Lodash _.merge(). To narzędzie obsługuje oba przypadki bez kodu.
Jaka jest różnica między scalaniem głębokim a płytkim?
Przy scalaniu płytkim, jeśli oba obiekty mają ten sam klucz, wartość późniejszego obiektu całkowicie zastępuje wcześniejszą — w tym obiekty zagnieżdżone. Przy scalaniu głębokim obiekty zagnieżdżone są łączone rekurencyjnie. Zatem {"a": {"b": 1}} głęboko scalony z {"a": {"c": 2}} daje {"a": {"b": 1, "c": 2}} — oba klucze przeżywają.
Jak scalić pliki konfiguracyjne JSON z nadpisaniami?
Wklej konfiguracje jako tablicę JSON z wartościami domyślnymi na początku i nadpisaniami na końcu: [defaultConfig, productionConfig]. Użyj scalania głębokiego, jeśli konfiguracje mają zagnieżdżone obiekty.
Jak tablice w obiektach JSON są obsługiwane podczas scalania?
Tablice są zastępowane, a nie łączone. Jeśli obiekt A ma "items": [1, 2], a obiekt B ma "items": [3], wynik ma "items": [3].
Czy moje dane są wysyłane na serwer?
Nie. Scalanie działa całkowicie w Twojej przeglądarce. Twój JSON nigdy nie opuszcza Twojego urządzenia.
Powiązane narzędzia
Składnia JSON opisana jest na json.org i w RFC 8259. Scalanie w JavaScript opisuje MDN Object.assign oraz składnia spread. Dla głębokiego scalania w Lodash służy funkcja merge. Przegląd JSON na MDN. Zobacz też jq i Postman.