JSON sorteren
Gratis online tool om JSON te sorteren. Met één klik object-sleutels alfabetisch rangschikken of array-elementen op waarde sorteren. Schakel oplopend/aflopend en recursie in geneste structuren.
Gerelateerde aanbevelingen
Wat is JSON Sorteren (JSON Sort)?
JSON Sorteren (JSON Sort) is het herschikken van sleutels binnen een JSON-object volgens een bepaalde volgorde (meest gebruikelijk alfabetisch), of het herschikken van elementen in een JSON-array volgens een bepaalde regel (numerieke waarde, lexicografische volgorde). Het verandert geen veldwaarden of veldtypen, alleen de fysieke volgorde - een typische canonicalisatiebewerking die JSON van verschillende bronnen, tijden en auteurs in één enkele structurele vorm brengt.
De 5 belangrijkste redenen waarom JSON-sortering in de praktijk nodig is: ① **Verminder Git Diff-ruis** - verschillende ontwikkelaars construeren JSON-objecten in verschillende volgordes, wat bij commit enorme zinloze diffs genereert. Na het verenigen van de sleutelvolgorde richt de diff zich op echte wijzigingen. ② **Config-normalisatie** - CI/CD-pipelines, configuratiecentra en Feature Flag-diensten willen dat configs in alle omgevingen een consistente sleutelvolgorde hebben voor eenvoudigere audit, rollback en cross-omgeving diff. ③ **Gegevensvergelijking** - vooraf sorteren voor het gebruik van een JSON Diff-tool elimineert valse verschillen veroorzaakt door verschillende sleutelvolgordes. ④ **API-respons standaardisatie** - frontends die responses cachen of hashen willen een stabiele sleutelvolgorde, om te voorkomen dat dezelfde bedrijfsgegevens als verschillende sleutels worden behandeld vanwege verschillende volgordes. ⑤ **Leesbaarheid** - handgeschreven JSON wordt vaak veld-per-veld opgebouwd door bedrijfslogica; sorteren maakt het visueel netter.
Op implementatieniveau is de kern van JSON-sortering het sorteren van elke laag objectsleutels met `localeCompare`, en het recursief verwerken van geneste objecten. De JSON Sorteer-tool van GeekFormat heeft twee modi: ① **Sorteren op sleutel** (standaard) - herschikt alleen objectsleutels alfabetisch, met behoud van de volgorde van array-elementen. ② **Sorteren op array-element** - sorteert array-elementen op hun geserialiseerde string-lexicografische volgorde. Het ondersteunt ook een recursie-schakelaar en een oplopend/aflopend-schakelaar. Het hele proces vindt lokaal in de browser plaats; er wordt niets geüpload.
Toepassingsgevallen
- Verenig de sleutelvolgorde in team JSON-configuratiebestanden, package.json, tsconfig.json, etc. om Git Diff-ruis te verminderen
- Sorteer twee JSON's vóór het vergelijken om valse verschillen door verschillende sleutelvolgordes te elimineren, zodat de diff zich richt op echte wijzigingen
- Standaardiseer de sleutelvolgorde van API-responsgegevens om frontend-caching, IndexedDB-opslag en object-hash-berekening te vergemakkelijken
- Sla CI/CD-configuratiecentrum, Feature Flag-dienst-configs op in canonieke sleutelvolgorde, voor eenvoudigere audit en rollback
- Ruim grote JSON-configuratiebestanden of data-exports op - sleutels alfabetisch sorteren maakt ze visueel netter
- Verenig de sleutelvolgorde voordat u JSON naar database / Redis / berichtenwachtrij schrijft, om idempotente downstream-consumptie te garanderen
Hoe te gebruiken
- Plak de te sorteren JSON-inhoud in het linker invoerveld, of klik op 'Voorbeeld' om een typische meerlagige JSON te laden, of upload een .json/.txt-bestand
- Selecteer de sorteermodus in de onderste optiebalk: standaard 'Sorteren op sleutel'; schakel over naar 'Sorteren op array' als u array-elementen moet sorteren
- Schakel de oplopend / aflopend knop naar wens in, vink 'Recursief' aan of uit (standaard aan)
- Klik op de knop 'Sorteren'; het rechter uitvoerveld toont het geformatteerde gesorteerde resultaat. Klik op 'Kopiëren' of 'Downloaden' om op te slaan als sorted.json
Functies
- Twee sorteermodi: ondersteunt 'Sorteren op object-sleutel' en 'Sorteren op array-element' als centrale modi, met één klik schakelbaar
- Recursieve geneste verwerking: recursie standaard ingeschakeld, afdalend in meerlagige geneste objecten om sleutels op elk niveau te sorteren, wat zorgt voor een consistent nette structuur
- Oplopend/aflopend schakelaar: ingebouwde oplopend (A-Z) / aflopend (Z-A) knop, flexibel voor leesgewoonten en bedrijfsvereisten
- localeCompare-woordenboekvolgorde: sleutelvergelijking gebruikt lokale woordenboekvolgorde, sorteert Chinees, speciale tekens en emoji correct
- Behoudt gegevensstructuur: past alleen sleutelnaam- en array-elementvolgorde aan, voegt geen velden toe of verwijdert ze, wijzigt geen waardetypes
- Snelle voorbeeldgegevenservaring: ingebouwde 'zoo + alpha/beta/omega' demogegevens, één-klik laden om het sorteereffect te zien
- Lokale verwerking voor privacy: parsen, sorteren en formattering vinden allemaal lokaal in de browser plaats, geen invoer naar een server gestuurd
- Naadloze downstream-overgang: gesorteerde resultaten kunnen met één klik worden gekopieerd naar JSON Formatter, Diff Vergelijking, Schema Validator, etc.
Codevoorbeelden
Object-sleutel sortering in JavaScript met Object.keys + sort
javascript// Recursieve sleutelsortering, retourneert een nieuw object (wijzigt origineel niet)
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 };
const sorted = sortKeysDeep(data);
console.log(JSON.stringify(sorted, null, 2));
// => {
// "alpha": 1,
// "beta": 2,
// "zoo": { "animals": ["zebra", "elephant"] }
// }Python sort_keys=True + array-sortering
pythonimport json
data = {"zoo": {"animals": ["zebra", "elephant"]}, "alpha": 1, "beta": 2}
# Automatische alfabetische sortering bij serialisatie met sort_keys
sorted_json = json.dumps(data, indent=2, sort_keys=True, ensure_ascii=False)
print(sorted_json)
# Array op waarde sorteren
arr = [3, 1, 4, 1, 5, 9, 2, 6]
print(sorted(arr)) # numeriek oplopend
print(sorted(arr, reverse=True)) # aflopend
# String-woordenboekvolgorde
print(sorted(['banana', 'Apple', 'cherry'])) # ['Apple', 'banana', 'cherry']Sorteer op sleutel met jq
bash# Recursieve sleutelsortering + 2 spaties inspringing jq -S '.' data.json # Uitleg: -S (--sort-keys) sorteert alle objectsleutels recursief in ASCII oplopende volgorde # Sorteer array op element-string-lexicografische volgorde (objecten worden vergeleken op hun JSON-string) jq 'sort' data.json # Sorteer array op een veld (bijv. op leeftijd oplopend) jq 'sort_by(.age)' data.json # Aflopend jq 'sort_by(.age) | reverse' data.json
Veelgestelde vragen
Wat is het verschil tussen JSON Sorteren en JSON Formatteren?
JSON Formatter past alleen inspringing, regelovergangen en witruimtetekens aan, zonder de volgorde van sleutels te wijzigen. JSON Sorteren herschikt de fysieke volgorde van sleutelnamen (alfabetisch) of array-elementen (op waardegrootte). De twee worden vaak samen gebruikt: sorteer eerst om de structuur netjes te maken, formatteer dan om de inhoud leesbaar te maken - de uiteindelijke output is de schoonste JSON.
Wordt de gesorteerde JSON groter?
De byte-telling is in wezen ongewijzigd. Sortering voegt geen velden toe of verwijdert ze, herschikt alleen sleutelnamen, dus het aantal geserialiseerde tekens is bijna hetzelfde als het origineel (inspringingstekens kunnen 1-2 bytes verschillen).
Verandert het veldwaarden of veldtypen?
Nee. Deze tool is een puur structurele herschikking: object-sleutels worden herschikt, array-elementen worden herpositioneerd, waarden en typen blijven onaangeraakt. De relatieve semantiek van `null`, booleans, getallen, strings, objecten en arrays blijft volledig behouden.
Kan ik object-sleutels op waarde sorteren?
Deze tool ondersteunt momenteel twee modi: ① Sorteren op object-sleutel alfabetisch (de sleutelvolgorde van het object verandert); ② Sorteren van array-elementen op waarde (elementen binnen een array veranderen van positie). Als u array-elementen op een object-veldwaarde moet sorteren, gebruik dan eerst de JSON Path-tool om dat veld naar een topniveau-array te extraheren en gebruik vervolgens de array-modus om te sorteren.
Wat betekent recursieve sortering? Moet ik het uitschakelen?
Recursief = sleutelnamen sorteren op elk niveau van geneste objecten. Niet-recursief = alleen de sleutels van het object op het topniveau sorteren; subobjecten behouden hun oorspronkelijke volgorde. In de meeste scenario's raden we aan recursie ingeschakeld te houden voor een consistent nette structuur. Alleen wanneer uw innerlijke objecten specifieke volgorde-semantiek hebben (bijv. een 'prioriteitslijst' in config), zou u recursie uitschakelen.
Waarom worden mijn integer-sleutels aan het begin gesorteerd?
Dit is JavaScript-spec-gedrag: wanneer de sleutels van een object lijken op niet-negatieve gehele getallen (0, 1, 2...), itereert de engine ze in numerieke oplopende volgorde - integer-sleutels verschijnen vóór string-sleutels. De sortering van deze tool behoudt dat gedrag. Als u wilt dat 'integer-achtige sleutels ook op string-volgorde worden gesorteerd', gebruik dan JSON Repareren of een editor om ze te wijzigen in string-sleutels met aanhalingstekens zoals "0", "1".
Kunnen Chinese sleutelnamen op Pinyin worden gesorteerd?
Ja. Onder de motorkap gebruikt deze tool JavaScript's localeCompare, die standaard sorteert volgens de huidige browser-locale. In een Chinese omgeving sorteert het in principe op Pinyin oplopend, maar het exacte gedrag varieert met browser en besturingssysteem. Voor strikte Pinyin-sortering gebruikt u een Node.js-bibliotheek die ICU-collatie-regels ondersteunt (bijv. `natural-orderby`).
Hoe sorteer ik objecten binnen een array?
De array-modus ondersteunt het sorteren van objecten binnen een array op de 'lexicografische volgorde van de geserialiseerde string' - dat betekent dat objecten worden gesorteerd op de tekenreekswaarde van het eerste afwijkende veld. Om op een specifiek veld te sorteren (bijv. price, date), gebruik dan een sort-by-bewerking in de JSON Path-tool, of gebruik in code `Array.prototype.sort((a, b) => a.price - b.price)`.
Kan ik de originele volgorde ongedaan maken en herstellen na het sorteren?
Deze tool onderhoudt geen geschiedenis van de oorspronkelijke volgorde (uit eenvoud). Aanbevelingen: ① Kopieer het origineel naar het klembord voordat u het wijzigt; ② Sla het origineel op als .json-bestand voor rollback; ③ Gebruik git om originelen in productie te beheren - `git checkout` elke historische versie wanneer nodig.
Kan het gesorteerde resultaat worden geëxporteerd en opgeslagen?
Ja. Klik op 'Downloaden' om op te slaan als sorted.json; of klik op 'Kopiëren' om het resultaat op het klembord te plaatsen en in code of documenten te plakken. Het gedownloade bestand is standaard JSON, consumeerbaar door elke editor, IDE of CI-tool.
Uploadt de tool mijn JSON naar een server?
Nee. Parsen, sorteren en formattering vinden allemaal lokaal in de browser plaats; invoer en tussenresultaten worden niet naar een server gestuurd. Werkt offline, geschikt voor het verwerken van gevoelige JSON (bijv. interne configs, niet-gepubliceerde API-responses).
Wat is de beste volgorde van gebruik met JSON Diff en Schema Validatie?
Aanbevolen keten: ① JSON repareren (ongeldige JSON opschonen) → ② JSON sorteren (sleutelvolgorde verenigen) → ③ JSON Diff (vergelijken op basis van gesorteerd resultaat, minimale diff-ruis) → ④ JSON formatteren (inspringing verenigen voor leesbaarheid) → ⑤ JSON Schema-validatie (bedrijfsveldbeperkingen). Kies de stappen die u nodig heeft.
Probleemoplossing
Sortering toont 'Invalid JSON' fout
Oorzaak: invoer is geen geldige JSON. Oplossing: plak eerst de JSON in de JSON Repair-tool om het op te schonen (verwerkt automatisch achterste komma's, enkele aanhalingstekens, sleutels zonder aanhalingstekens, etc.), ga dan terug naar deze tool; of controleer of u buitenste accolades / vierkante haken hebt gemist.
Integer-sleutels worden aan het begin gesorteerd
Oorzaak: de JavaScript-spec itereert 'niet-negatief geheel getal-achtige' sleutels in numerieke oplopende volgorde. Oplossing: wijzig integer-sleutels naar string-sleutels ("0", "1") vóór het sorteren; of accepteer dit gedrag als een functie.
Array-objecten werden niet gesorteerd op mijn verwachte veld
Oorzaak: de array-modus sorteert op de lexicografische volgorde van de geserialiseerde string, waarbij het eerste afwijkende veld de uiteindelijke volgorde bepaalt. Oplossing: gebruik sort-by in de JSON Path-tool; of gebruik in code `arr.sort((a, b) => a.field - b.field)` om de comparator aan te passen; deze tool richt zich voornamelijk op sleutelnaam-sorteerscenario's.
Chinese sleutelnamen worden niet zoals verwacht gesorteerd
Oorzaak: het gedrag van localeCompare varieert enigszins tussen browsers/besturingssystemen, en voor Chinees gebruikt het standaard Unicode-codepunten of de browser-locale. Oplossing: specificeer de locale expliciet in code (bijv. `localeCompare('nl-NL')`); of schakel naar een bibliotheek die ICU-collatie-regels ondersteunt voor strikte Pinyin-sortering.
Innerlijke geneste objecten werden niet gesorteerd (alleen het buitenste niveau)
Oorzaak: 'Recursief' in de onderste optiebalk is niet aangevinkt. Oplossing: vink de 'Recursief'-schakelaar aan (standaard aangevinkt), activeer de sortering opnieuw; sleutels van innerlijke objecten worden dan ook alfabetisch gesorteerd.
Grote bestanden (10 MB+) laten de sortering bevriezen
Oorzaak: een grote tekst in één keer parsen met JSON.parse kost veel geheugen. Oplossing: houd de invoer binnen 1-2 MB; gebruik voor enorme bestanden Node.js (`Object.keys(...).sort()`) of Python (`json.dumps(..., sort_keys=True)`) scripts lokaal; gebruik deze tool daarna voor kleine verificatie.
Woordenlijst
- JSON Sort
- Het herschikken van JSON-object-sleutels alfabetisch of array-elementen op waarde; verandert geen veldwaarden of typen, alleen de fysieke volgorde.
- localeCompare
- Ingebouwde JavaScript string-lexicografische vergelijkingsfunctie die -1/0/1 retourneert. Deze tool gebruikt localeCompare om sleutels te sorteren, en verwerkt Chinees, speciale tekens en emoji correct.
- ASCII Oplopend / Aflopend
- Sorteren op Unicode-codepunten van tekens (ASCII-tabel); hoofdletters A-Z vóór kleine letters a-z, cijfers 0-9 vóór letters.
- Locale-aware sortering
- Sortering die taalconventies respecteert; voor Chinees standaard op Unicode-codepunten of browser-locale, wat verschilt van strikte Pinyin-sortering.
- Integer-achtige sleutel
- Een objectsleutel die lijkt op een niet-negatief geheel getal (bijv. "0", "1", "2"); JavaScript-engines itereren ze automatisch in numerieke oplopende volgorde. Spec-gedrag, kan niet worden uitgeschakeld.
- Recursieve sortering
- Het sorteren van sleutelnamen op elk niveau van geneste objecten. Deze tool schakelt het standaard in; uitschakelen sorteert alleen het topniveau.
- Canonieke vorm
- Genormaliseerde vorm; JSON-sortering is een manier om een canonieke vorm te construeren, wat diff, cache-hash en consistentie tussen omgevingen vergemakkelijkt.
- Git Diff-ruis
- Diff-regels in code-review die worden veroorzaakt door formaatverschillen (niet door echte logische wijzigingen); commits met JSON met sleutels in een andere volgorde genereren grote hoeveelheden ruis-diffs.
- pre-commit Hook
- Script dat automatisch wordt uitgevoerd vóór een Git-commit; veel teams roepen `jq -S .` aan in pre-commit om JSON-bestandssleutels te sorteren vóór add, wat zorgt voor consistente JSON-volgorde in de repo.
- JSON Diff Tool
- Een tool (bijv. jsondiffpatch) die twee JSON's vergelijkt om verschillen te vinden; aanbevolen om beide kanten eerst te sorteren, om valse diff door sleutelvolgorde te elimineren.
JSON Sorteerscenario's & Methodereferentie
| Scenario | Sorteren op | Aanbevolen implementatie | Bijbehorende tool |
|---|---|---|---|
| Verminder Git Diff-ruis | Object-sleutel alfabetisch | jq -S | Deze tool / jq |
| Config-centrum normalisatie | Object-sleutel alfabetisch | jq -S | Deze tool / jq |
| API-respons cache-sleutel | Object-sleutel alfabetisch | JSON.stringify(sort_keys=True) | Deze tool / Python json |
| Paginatie API-array-samenvoeging | Geen sortering | concat | JSON Samenvoegen-tool |
| Sorteer array op aanmaaktijd | Array-element .created_at | jq 'sort_by(.created_at)' | jq sort_by |
| Sorteer producten op prijs | Array-element .price | lodash _.sortBy | JS sort((a,b)=>a.price-b.price) |
JSON Sorteren vs JSON Diff vs JSON Samenvoegen
| Tool | Wat het oplost | Sorteerdimensie | Wordt meestal gecombineerd met |
|---|---|---|---|
| JSON Sorteren (deze tool) | Sleutel/array-volgorde verenigen | Sleutels / array-elementen | JSON Diff, JSON Samenvoegen |
| JSON Diff | Twee JSON's vergelijken op verschillen | Geen (op inhoud gebaseerd) | Sorteren (sorteer eerst, dan diff) |
| JSON Samenvoegen | Multi-bron samenvoeging | Sorteerbaar via config | Sorteren (normaliseren na samenvoeging) |
| JSON Repareren | Ongeldige JSON naar geldige converteren | Geen | Sorteren (archiveren na reparatie) |
| JSON Schema Validatie | Veldbeperking-validatie | Geen | Kan gesorteerde output valideren |
Authoritative References
- JSON Compress
- CSV naar JSON Converter
- JSON naar CSV
- JSON Diff
- JSON Escape / Unescape
- JSON afvlakken
- JSON Formatter
- JSON-generator
- JSONPath Online Query
- JSON samenvoegen
- JSON repareren
- JSON Schema Validator
- JSON sorteren
- JSON Stringify
- JSON naar HTML-tabel
- JSON naar Java
- JSON to Markdown
- JSON naar SQL
- JSON naar TOML
- JSON naar TypeScript
- XML naar JSON
- JSON naar XML
- YAML naar JSON
- JSON naar YAML
- JSON naar Python
- JSON naar Go
- JSON naar Rust
- JSON naar Swift
- JSON naar C#
- JSON naar C++
- JSON naar PHP