Sortowanie JSON
Uporządkuj klucze obiektów JSON i elementy tablic, aby dane były łatwiejsze do czytania, porównywania i zapisywania w spójnej formie. Wszystko działa lokalnie w przeglądarce.
Powiązane Rekomendacje
Czym jest sortowanie JSON?
Sortowanie JSON polega na ponownym ułożeniu kluczy obiektu według określonego porządku albo uporządkowaniu elementów tablicy według wartości. Nie zmienia to samych danych ani ich typów, a jedynie ich kolejność.
Taka normalizacja pomaga ograniczyć szum w Git Diff, ujednolicić pliki konfiguracyjne, przygotować dane przed JSON Diff oraz ustabilizować klucze cache w odpowiedziach API. Ten sam JSON nie wygląda wtedy jak niepotrzebna zmiana tylko z powodu innej kolejności kluczy.
Narzędzie GeekFormat oferuje dwa tryby: sortowanie kluczy i sortowanie tablic, a także przełączanie rosnąco/malejąco oraz sortowanie rekurencyjne. Dane nie opuszczają przeglądarki.
Przypadki użycia
- Ujednolicenie kolejności kluczy w package.json, tsconfig.json i innych konfiguracjach
- Posortowanie obu JSON-ów przed porównaniem, aby usunąć fałszywe różnice wynikające wyłącznie z kolejności
- Ustabilizowanie kolejności kluczy w odpowiedziach API dla cache, hashy i snapshotów
- Uporządkowanie dużych plików JSON przed code review lub audytem konfiguracji
- Przygotowanie wyniku po merge albo repair przed dalszą walidacją
Jak Używać
- Wklej JSON po lewej stronie, załaduj przykład albo importuj plik .json
- Wybierz tryb sortowania kluczy lub tablicy, a następnie ustaw kierunek i rekurencję
- Uruchom sortowanie i sprawdź wynik po prawej stronie
- Skopiuj rezultat albo pobierz go jako plik sorted.json
Funkcje
- Dwa tryby: sortowanie kluczy obiektów i sortowanie elementów tablic
- Obsługa rekurencji: porządek jest wyrównywany także wewnątrz obiektów zagnieżdżonych
- Rosnąco i malejąco: łatwe przełączanie kierunku sortowania
- Bez zmiany struktury: wartości i typy pozostają bez zmian, zmienia się tylko kolejność
- Lokalne przetwarzanie: JSON nie jest wysyłany na serwer
- Dobra baza do dalszej pracy: wynik można od razu przekazać do JSON Diff, Repair i Format
Przykłady kodu
Rekurencyjne sortowanie kluczy w JavaScript
javascript// Rekurencyjnie sortuje klucze i zwraca nowy obiekt
function sortKeysDeep(value) {
if (Array.isArray(value)) return value.map(sortKeysDeep);
if (value !== null && typeof value === 'object') {
return Object.keys(value)
.sort((a, b) => a.localeCompare(b))
.reduce((acc, k) => {
acc[k] = sortKeysDeep(value[k]);
return acc;
}, {});
}
return value;
}
const data = { zoo: { animals: ['zebra', 'elephant'] }, alpha: 1, beta: 2 };
console.log(JSON.stringify(sortKeysDeep(data), null, 2));Użycie sort_keys=True w Pythonie
pythonimport json
data = {"zoo": {"animals": ["zebra", "elephant"]}, "alpha": 1, "beta": 2}
print(json.dumps(data, indent=2, sort_keys=True, ensure_ascii=False))
arr = [3, 1, 4, 1, 5]
print(sorted(arr))
print(sorted(arr, reverse=True))Sortowanie JSON przez jq
bash# Rekurencyjnie posortuj klucze jq -S '.' data.json # Posortuj elementy tablicy jq 'sort' data.json # Sortowanie po konkretnym polu jq 'sort_by(.age)' data.json
Często Zadawane Pytania
Czym różni się sortowanie JSON od formatowania JSON?
Formatowanie zmienia tylko wcięcia i układ tekstu, a sortowanie JSON przestawia klucze oraz elementy tablic. Użycie obu narzędzi razem daje jednolity porządek i czytelny wygląd.
Czy po sortowaniu JSON będzie większy?
Prawie nie. Zmienia się tylko kolejność kluczy i elementów, a nie ilość danych.
Czy zmieniają się wartości lub typy?
Nie. `null`, liczby, stringi, boole, obiekty i tablice pozostają dokładnie takie same.
Co oznacza sortowanie rekurencyjne?
To sortowanie stosowane nie tylko do obiektu na najwyższym poziomie, ale też do wszystkich obiektów wewnątrz. Przy konfiguracjach i odpowiedziach API zwykle warto mieć je włączone.
Dlaczego klucze liczbowe trafiają na początek?
W JavaScript klucze wyglądające jak liczby całkowite są iterowane w porządku numerycznym. To zachowanie specyfikacji, nie błąd narzędzia.
Jak sortowane są obiekty znajdujące się w tablicy?
Tryb tablicy porównuje elementy w sposób ogólny na podstawie ich reprezentacji tekstowej. Jeśli potrzebujesz sortowania po konkretnym polu, lepiej użyć `sort_by(.field)` albo własnej funkcji.
Czy JSON jest wysyłany na serwer?
Nie. Wszystkie operacje odbywają się lokalnie w przeglądarce, więc narzędzie nadaje się także do danych wrażliwych.
W jakiej kolejności łączyć to z JSON Diff lub Schema?
Najwygodniej zwykle: JSON Repair → sortowanie JSON → JSON Diff / formatowanie → walidacja Schema. Najpierw wyrównujesz kolejność, potem ograniczasz szum różnic.
Rozwiązywanie problemów
Pojawia się błąd Invalid JSON
Wejściowy JSON prawdopodobnie ma błąd składni. Najpierw sprawdź go w narzędziu JSON Repair lub JSON Format.
Klucze liczbowe zawsze są na górze
Tak działa JavaScript dla kluczy podobnych do liczb całkowitych. To zachowanie platformy, a nie błąd sortowania.
Obiekty w tablicy nie układają się tak, jak oczekuję
Tryb tablicy nie zna znaczenia pól biznesowych i porównuje elementy ogólnie. Dla pól takich jak `price` czy `date` lepiej użyć `sort_by`.
Obiekty zagnieżdżone nie są sortowane
Sprawdź, czy sortowanie rekurencyjne jest włączone. Bez niego przetwarzany jest tylko najwyższy poziom.
Bardzo duży JSON spowalnia przeglądarkę
Duże pliki warto wcześniej obrobić lokalnie przez `jq`, Python lub Node.js, a w przeglądarce tylko sprawdzić wynik końcowy.
Słownik
- JSON Sort
- Operacja zmieniająca tylko kolejność kluczy lub elementów tablicy bez ingerencji w wartości i typy.
- Recursive Sort
- Sortowanie stosowane nie tylko do najwyższego poziomu, ale też do wszystkich obiektów zagnieżdżonych.
- Ascending / Descending
- Rosnąco oznacza A-Z lub od mniejszych do większych wartości, malejąco działa odwrotnie.
- Canonical Form
- Ujednolicona reprezentacja JSON wygodna do porównań, cache i hashy.
- Git Diff Noise
- Zbędne różnice wynikające z kolejności lub formatowania, a nie z realnej zmiany danych.
- localeCompare
- Mechanizm porównywania łańcuchów w JavaScript, często używany do porządkowania nazw kluczy.
Najczęstsze zastosowania sortowania JSON
| Scenariusz | Co sortować | Polecana metoda | Narzędzie |
|---|---|---|---|
| Mniej szumu w Git Diff | Klucze obiektu | Rekurencyjne sortowanie kluczy | To narzędzie / jq -S |
| Normalizacja konfiguracji | Klucze obiektu | Rosnąco + rekurencja | To narzędzie |
| Stabilny klucz cache API | Klucze obiektu | Sortowanie przed stringify | To narzędzie / kod |
| Szybkie uporządkowanie tablicy | Elementy tablicy | Tryb tablicy | To narzędzie |
Sortowanie JSON a diff i merge
| Narzędzie | Cel | Co porządkuje | Co dalej |
|---|---|---|---|
| Sortowanie JSON | Ujednolicenie kolejności | Klucze / tablice | Diff, formatowanie |
| JSON Diff | Porównanie zmian | Brak | Najlepiej po sortowaniu |
| JSON Merge | Scalanie źródeł | Opcjonalnie po merge | Sortowanie po scaleniu |
| JSON Repair | Naprawa niepoprawnego JSON | Brak | Sortowanie po naprawie |
Authoritative References
- 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