Naprawa JSON
Darmowe narzędzie online do naprawy JSON. Automatycznie wykrywa i naprawia przecinki końcowe, pojedyncze cudzysłowy, klucze bez cudzysłowów, niezamknięte nawiasy, komentarze i otoczki Markdown. Zaprojektowane do czyszczenia wyników AI i odzyskiwania obciętego JSON. Całe przetwarzanie odbywa się lokalnie w przeglądarce.
Powiązane Rekomendacje
Czym jest naprawa JSON (JSON Repair)?
Naprawa JSON (JSON Repair) to proces automatycznego przywracania niestandardowego tekstu JSON, który nie może zostać przetworzony przez ścisły parser JSON z powodu błędów składniowych, do prawidłowego łańcucha JSON zgodnego z RFC 8259. W przeciwieństwie do „formatowania JSON (Beautify)”, naprawa JSON nie zajmuje się różnicami w formatowaniu, lecz błędami strukturalnymi: przecinkami końcowymi, pojedynczymi cudzysłowami, brakującymi cudzysłowami, niezamkniętymi nawiasami, otoczkami Markdown, komentarzami — wszystko to powoduje SyntaxError w JSON.parse(), ale jest niezwykle powszechne w rzeczywistym rozwoju.
Źródła „niestandardowego” JSON w rzeczywistych projektach są wysoce skoncentrowane: ① podczas kopiowania z LLM, takich jak ChatGPT / Claude / Gemini, wynik jest często opakowany w bloki kodu Markdown (```json ... ```) lub zawiera tekst objaśniający; ② kopiowanie z console.log() obiektów JavaScript może zawierać przecinki końcowe i pojedyncze cudzysłowy; ③ pliki konfiguracyjne często używają rozszerzonej składni JSON5 / JSONC (zezwalającej na komentarze, klucze bez cudzysłowów, wieloliniowe łańcuchy itp.); ④ odpowiedzi strumieniowe lub obcięte logi mogą przerwać JSON w połowie, z brakującym zamykającym `}` lub `"`. Narzędzie do naprawy JSON skanuje tekst wejściowy, identyfikuje te typowe problemy i przywraca zawartość do standardowego JSON zgodnie z zasadą „minimalnej ingerencji”, zachowując w miarę możliwości oryginalną semantykę danych.
Na poziomie implementacji naprawa JSON zazwyczaj składa się z dwóch etapów: ① analiza tolerancyjna (tolerant parse) — użycie skanera opartego na automacie stanów zamiast wyrażeń regularnych do stopniowego przetwarzania strumienia znaków, rozróżniającego znaki składniowe „wewnątrz łańcuchów” i „na zewnątrz łańcuchów”; ② wyjście kanoniczne (canonical output) — regeneracja za pomocą `JSON.parse` + `JSON.stringify`, zapewniająca 100% zgodność wyjścia z każdym ścisłym parserem. Narzędzie do naprawy JSON GeekFormat wykonuje cały proces naprawy lokalnie w przeglądarce, nigdy nie wysyłając oryginalnej zawartości na żaden serwer, co czyni je odpowiednim do przetwarzania poufnych odpowiedzi API, wewnętrznych plików konfiguracyjnych i wyników modeli AI.
Przypadki użycia
- Czyszczenie wyników AI/LLM: konwersja jednym kliknięciem JSON z otoczką Markdown, tekstem objaśniającym i przecinkami końcowymi od ChatGPT/Claude na standardowy JSON
- Debugowanie i rozwiązywanie problemów z API: szybkie uzupełnianie nawiasów i łańcuchów, gdy odpowiedzi API są obcięte przez problemy z bramą lub siecią, w celu zlokalizowania oryginalnej struktury danych
- Literały obiektowe JavaScript skopiowane z konsoli: kompleksowa naprawa pojedynczych cudzysłowów, przecinków końcowych i kluczy bez cudzysłowów
- Czyszczenie plików konfiguracyjnych: usuwanie komentarzy z JSON5/JSONC w celu uzyskania standardowego JSON, gotowego do jednolitego przekazania do usług downstream
- Naprawa danych z logów i schowka: szybka standaryzacja fragmentów JSON zawierających komentarze, specjalne białe znaki lub obcięcia
- Przetwarzanie wstępne przy migracji danych: dodanie kroku naprawy w potoku migracji danych, aby zapobiec blokowaniu całego wsadu ETL przez kilka nieprawidłowych JSON-ów
Jak Używać
- Wklej JSON z błędami, z otoczką Markdown lub obcięty do lewego pola wejściowego, lub kliknij „Przykład”, aby załadować typowy uszkodzony JSON, lub prześlij plik .json/.txt
- Narzędzie automatycznie wykryje i naprawi typowe problemy składniowe; w prawym obszarze wyjściowym pojawi się sformatowany standardowy JSON oraz liczba naprawionych problemów każdego typu
- Jeśli pozostaną czerwone komunikaty o błędach, możesz ręcznie edytować dane wejściowe i ponownie uruchomić naprawę (Mac: ⌘+Shift+R, Windows: Ctrl+Shift+R)
- Po potwierdzeniu poprawności struktury kliknij „Kopiuj”, aby umieścić naprawiony wynik w schowku, lub „Pobierz”, aby zapisać jako repaired.json do dalszego formatowania, walidacji itp.
Funkcje
- Obsługa 7 typowych błędów składniowych: przecinki końcowe, pojedyncze cudzysłowy, klucze bez cudzysłowów, niezamknięte łańcuchy, komentarze, brakujące nawiasy, otoczki bloków kodu Markdown
- Zoptymalizowane czyszczenie wyników AI: automatyczne usuwanie otoczek ```json i tekstu objaśniającego poza blokami kodu, rozpoznawanie typowych wyników ChatGPT, Claude, Gemini i innych LLM
- Kompatybilność z JSON5/JSONC: parsowanie rozszerzonej składni, w tym komentarzy, luźnych cudzysłowów i specjalnych białych znaków (np. niewidocznych znaków Unicode)
- Inteligentne uzupełnianie obciętego JSON: obsługa obciętych odpowiedzi API i brakujących nawiasów zamykających poprzez automatyczne uzupełnianie brakujących nawiasów i cudzysłowów
- Wizualizacja problemów naprawy: automatyczne zliczanie i wyświetlanie liczby naprawionych problemów każdego typu dla łatwego audytu i ręcznej weryfikacji
- Lokalne przetwarzanie dla prywatności: parsowanie, naprawa i formatowanie odbywają się w całości w przeglądarce, dane wejściowe nie są wysyłane na żaden serwer
- Bezproblemowe przekazanie do formatowania: naprawiony standardowy JSON można jednym kliknięciem przekazać do formatowania JSON, walidacji Schema lub generatora kodu
- Ładowanie plików i przykładów: obsługa przesyłania plików .json/.txt lub ładowania przykładu jednym kliknięciem w celu szybkiej weryfikacji efektów naprawy
Przykłady kodu
Programistyczna naprawa za pomocą biblioteki JavaScript jsonrepair
javascript// npm install jsonrepair
import { jsonrepair } from 'jsonrepair';
const broken = `{
name: 'Alice',
age: 30,
tags: ['dev', 'writer',], // trailing comma + comment
}`;
try {
const fixed = jsonrepair(broken);
const obj = JSON.parse(fixed);
console.log(obj);
// => { name: 'Alice', age: 30, tags: ['dev', 'writer'] }
} catch (err) {
console.error('Still unrepairable:', err.message);
}Programistyczna naprawa za pomocą biblioteki Python jsonrepair
python# pip install jsonrepair
from jsonrepair import jsonrepair
import json
broken = '''{
name: "Alice",
age: 30,
tags: ["dev", "writer",], // trailing comma + comment
}'''
fixed = jsonrepair(broken)
obj = json.loads(fixed)
print(obj)
# => {'name': 'Alice', 'age': 30, 'tags': ['dev', 'writer']}Szybka naprawa przecinków końcowych za pomocą jq + sed (tylko awaryjnie)
bash# Usuwanie przecinków końcowych z obiektów/tablic (opcja awaryjna; NIE obsługuje komentarzy / pojedynczych cudzysłowów) # W złożonych scenariuszach użyj dedykowanej biblioteki, np. jsonrepair sed -E 's/,([ \t]*[}\]])/\1/g' broken.json > clean.json # Walidacja naprawionego wyniku jq . clean.json >/dev/null && echo 'JSON is valid'
Często Zadawane Pytania
Jaka jest różnica między naprawą JSON a formatowaniem JSON?
Formatowanie JSON jedynie przeformatowuje JSON, który jest już prawidłowy, ale ma niespójne wcięcia lub odstępy. Naprawa JSON natomiast specjalnie obsługuje JSON z błędami składniowymi: najpierw koryguje problemy strukturalne, takie jak przecinki końcowe, pojedyncze cudzysłowy, komentarze i brakujące nawiasy, a następnie wyprowadza standardowy format. Gdy narzędzie do formatowania zgłasza SyntaxError, należy najpierw użyć naprawy JSON.
Jakie typowe błędy składniowe JSON może naprawić to narzędzie?
Narzędzie zawiera inteligentne algorytmy naprawy dla następujących częstych problemów: 1) Przecinki końcowe (Trailing comma); 2) Pojedyncze cudzysłowy zamiast podwójnych; 3) Klucze bez cudzysłowów; 4) Niezamknięte łańcuchy; 5) Komentarze liniowe i blokowe JavaScript; 6) JSON opakowany w bloki kodu Markdown; 7) Brakujące nawiasy zamykające z powodu obciętego zakończenia.
Dlaczego JSON generowany przez AI lub LLM często nie jest standardowy?
Duże modele językowe (ChatGPT, Claude, Gemini itp.) często generują JSON z otoczką Markdown (```json ... ```), tekstem objaśniającym przed lub po, przecinkami końcowymi, komentarzami lub niekompletną strukturą z powodu obcięcia tokenów. Naprawa JSON jest specjalnie zoptymalizowana pod kątem tych scenariuszy — czyszczenie wyników AI do prawidłowego JSON jednym kliknięciem.
Czy naprawiony JSON jest zawsze strukturalnie identyczny z oryginalnymi danymi?
Naprawiony wynik jest prawidłowym łańcuchem JSON zgodnym ze standardem JSON; semantyka danych jest zachowana w zdecydowanej większości przypadków. Ponieważ jednak naprawa opiera się na regułach heurystycznych, w skrajnie uszkodzonych lub niejednoznacznych scenariuszach (np. wiele brakujących przecinków w tej samej linii) wynik może nieznacznie odbiegać od pierwotnego zamysłu. W przypadku krytycznych danych zaleca się dodatkową walidację Schema lub ręczną weryfikację.
Dlaczego nie użyć bezpośrednio Python json.loads lub JavaScript JSON.parse?
Natywne parsery mogą jedynie zgłaszać błąd SyntaxError, ale nie mogą wykonywać naprawy. Naprawa JSON to warstwa tolerancyjna znajdująca się przed natywnymi parserami: najpierw próbuje naprawić tekst, a następnie przekazuje go natywnemu parserowi, zapewniając, że końcowy wynik może być przetworzony przez każdy ścisły parser JSON. Ten sam pomysł można zastosować do przetwarzania wstępnego po stronie serwera w środowisku produkcyjnym.
Czy komentarze z JSON5 / JSONC są zachowywane?
Nie. Komentarze są częścią rozszerzonej składni JSON5, a nie standardowego JSON, i narzędzie usuwa je, aby zapewnić zgodność wyjścia ze standardowym JSON. Jeśli chcesz zachować komentarze, kontynuuj korzystanie z plików źródłowych JSON5 lub łańcucha narzędzi JSONC. Jeśli potrzebujesz przekonwertować JSON5 na standardowy JSON, to narzędzie robi to bezpośrednio.
Czy obcięty JSON (np. przerwane wyjście strumieniowe) można naprawić?
Tak. Narzędzie próbuje dopasować brakujące nawiasy zamykające, nawiasy kwadratowe i zamykające cudzysłowy łańcuchów, maksymalnie zachowując rozpoznaną zawartość. Uwaga: jeśli punkt obcięcia znajduje się wewnątrz literału łańcuchowego, może być konieczne ręczne uzupełnienie brakujących znaków.
Czy po naprawie następuje utrata danych?
W typowych scenariuszach naprawy (usuwanie przecinków końcowych, dodawanie cudzysłowów, uzupełnianie nawiasów, usuwanie komentarzy) semantyka danych jest w pełni zachowana. W rzadkich przypadkach, gdy oryginalna zawartość ma nieodwracalną niejednoznaczność (np. zniszczony poziom zagnieżdżenia), narzędzie wykona możliwie konserwatywną naprawę i zachowa oryginalny wygląd; nie będzie aktywnie usuwać pól ani kluczy.
Czy można naprawić wiele JSON-ów wsadowo?
To narzędzie naprawia jedno wejście na raz. W scenariuszach wsadowych zaleca się najpierw uruchomienie podstawowego algorytmu lokalnie w skrypcie (np. biblioteka jsonrepair dla Pythona lub pakiet npm josdejong/jsonrepair), a następnie zaimportowanie wyniku do tego narzędzia w celu ręcznej weryfikacji i formatowania.
Czy po naprawie nadal potrzebne jest formatowanie i walidacja Schema?
Zalecane. Naprawa rozwiązuje przede wszystkim błędy na poziomie składni; formatowanie i walidacja Schema zapewniają czytelność i poprawność biznesową. Wynik narzędzia do naprawy bezproblemowo łączy się z formatowaniem JSON, walidatorem Schema i generatorami kodu GeekFormat.
Czy narzędzie przesyła mój JSON na serwer?
Nie. Całe parsowanie, naprawa i formatowanie odbywają się lokalnie w przeglądarce; ani dane wejściowe, ani wyniki pośrednie nie są wysyłane na żaden serwer. Działa offline, odpowiednie do przetwarzania JSON zawierającego poufne informacje (np. odpowiedzi API środowiska produkcyjnego, wewnętrzne konfiguracje).
Czy można ustalić strategię naprawy używaną za każdym razem?
To narzędzie domyślnie włącza wszystkie typowe reguły naprawy, aby zmaksymalizować skuteczność. Jeśli potrzebujesz precyzyjnej kontroli nad regułami dla konkretnego języka lub zespołu, możesz użyć biblioteki jsonrepair w swoim środowisku produkcyjnym i selektywnie włączać lub wyłączać określone reguły. Wynik tego narzędzia może również służyć jako standaryzowane wejście do dalszej walidacji.
Rozwiązywanie problemów
Błąd „Nie można naprawić tego JSON”
Przyczyna: tekst wejściowy ma poważne uszkodzenia strukturalne, takie jak wiele brakujących nawiasów, obcięte literały łańcuchowe lub uszkodzony zestaw znaków. Rozwiązanie: najpierw otwórz oryginalny plik w edytorze zwykłego tekstu, potwierdź, że kodowanie to UTF-8 bez BOM i nie jest to skompresowany plik binarny; jeśli dane pochodzą z odpowiedzi API, skontaktuj się ze źródłem w celu uzupełnienia; dla skrajnie uszkodzonych zestawów danych użyj bezpośrednio pliku źródłowego.
Pola przesunęły się w niewłaściwe pozycje po naprawie
Przyczyna: oryginalny tekst zawierał znaki składni JSON (np. //, /*, }) wewnątrz komentarzy lub literałów łańcuchowych, wprowadzając parser w błąd; lub poziom zagnieżdżenia jest tak głęboki, że dopasowanie nawiasów jest nieprawidłowe. Rozwiązanie: ręcznie poprzedź // i /* wewnątrz łańcuchów znakiem ucieczki; dla głęboko zagnieżdżonych danych dodaj tymczasowe zewnętrzne nawiasy lub podziały wierszy przed ponowną naprawą.
Tekst objaśniający w wynikach AI nie został usunięty
Przyczyna: wyniki AI często zaczynają się lub kończą językiem naturalnym (np. „Oto wynik:”) i mogą zajmować wiele wierszy. Rozwiązanie: użyj edytora tekstu, aby usunąć tekst poza blokiem JSON, pozostawiając tylko zawartość wewnątrz najbardziej zewnętrznej otoczki ```json; jeśli narzędzie nadal nie może rozpoznać, ręcznie dodaj zewnętrzne { } przed ponowną naprawą.
Rozmiar nie zmienił się po naprawie lub niektóre znaki zostały zastąpione
Przyczyna: oryginał zawierał odwrotne ukośniki, sekwencje ucieczki Unicode lub encje HTML, które narzędzie ponownie poprzedziło znakami ucieczki zgodnie z regułami JSON. Rozwiązanie: sprawdź, czy oryginał nie był zagnieżdżony w łańcuchu JS; jeśli znajduje się na stronie HTML, najpierw wykonaj dekodowanie HTML; zwiększenie liczby znaków po eskejpowaniu jest normalne.
Przeglądarka pokazuje „Brak pamięci” lub strona się zawiesza
Przyczyna: pojedyncze dane wejściowe przekraczające 5–10 MB powodują znaczne obciążenie pamięci przeglądarki. Rozwiązanie: podziel dane na mniejsze partie (po 1–2 MB); lub użyj biblioteki jsonrepair po stronie serwera do przetwarzania strumieniowego; niewielka różnica między naprawionym wynikiem a oryginałem jest normalna.
Po naprawie walidacja Schema nadal zgłasza błędy
Przyczyna: naprawa JSON rozwiązuje tylko błędy na poziomie składni; nie sprawdza zgodności nazw pól biznesowych, typów ani wartości ze Schema. Rozwiązanie: użyj narzędzia do walidacji JSON Schema od GeekFormat, aby sprawdzić ograniczenia pól; zlokalizuj konkretne pola na podstawie błędów i popraw je ręcznie.
Słownik
- JSON
- JavaScript Object Notation, lekki format wymiany danych oparty na parach klucz-wartość, zdefiniowany w RFC 8259. De facto standard dla REST API, plików konfiguracyjnych i logów.
- RFC 8259
- Oficjalna specyfikacja JSON wydana przez IETF, definiująca ścisłą składnię prawidłowego JSON — wszystkie klucze muszą być w podwójnych cudzysłowach, tylko ograniczony zestaw znaków w łańcuchach wymaga eskejpowania, komentarze i przecinki końcowe nie są dozwolone.
- JSON.parse
- Ścisły parser JSON wbudowany w JavaScript i nowoczesne przeglądarki, zgodny z RFC 8259. Przy każdym błędzie składniowym zgłasza SyntaxError i nie może wykonywać naprawy tolerancyjnej.
- JSON5
- Rozszerzona składnia JSON (niestandardowa), zezwalająca na klucze bez cudzysłowów, łańcuchy w pojedynczych cudzysłowach, komentarze (// i /* */), przecinki końcowe, liczby szesnastkowe itp. Łatwiejsza do ręcznego pisania, ale niekompatybilna z JSON.parse.
- JSONC
- JSON with Comments, ogólna nazwa używana przez edytory takie jak VS Code dla plików konfiguracyjnych JSON z komentarzami (np. tsconfig.json). W praktyce popularny alias dla JSON5.
- Trailing Comma / Przecinek końcowy
- Dodatkowy przecinek po ostatnim elemencie obiektu lub tablicy. Dozwolony w JavaScript, ale zabroniony przez standard JSON — najczęstszy błąd składniowy w wynikach LLM i kopiach z console.log().
- Blok kodu Markdown
- Fragment kodu opakowany w trzy odwrócone apostrofy (```). LLM często automatycznie opakowują wynik JSON w ```json ... ```; bezpośrednie wklejenie do JSON.parse() spowoduje błąd.
- Tolerant Parser / Parser tolerancyjny
- Parser zdolny do próby odzyskania i kontynuowania analizy po napotkaniu błędów składniowych. Rdzeń narzędzia do naprawy JSON, w odróżnieniu od ścisłego JSON.parse.
- SyntaxError
- Wyjątek błędu składniowego zgłaszany przez JavaScript. Każdy ścisły parser JSON zgłasza go po otrzymaniu danych wejściowych niezgodnych z RFC 8259.
- Canonical JSON / JSON kanoniczny
- JSON ponownie wygenerowany przez parse + stringify, ze stabilną kolejnością kluczy, bez zbędnych białych znaków i 100% kompatybilnością ze standardowymi parserami. Ostateczny format wyjściowy narzędzia do naprawy JSON.
Typowe typy błędów naprawy JSON z przykładami
| Kategoria błędu | Przed | Po | Metoda naprawy |
|---|---|---|---|
| Przecinek końcowy | { "a": 1, } | { "a": 1 } | Usuń przecinek po ostatnim elemencie |
| Pojedyncze cudzysłowy | { 'a': 1 } | { "a": 1 } | Zamień wszystkie pojedyncze cudzysłowy na podwójne |
| Klucze bez cudzysłowów | { a: 1 } | { "a": 1 } | Dodaj podwójne cudzysłowy wokół klucza |
| Komentarze liniowe | { // komentarz
"a": 1 } | { "a": 1 } | Usuń całe linie z komentarzami // |
| Komentarze blokowe | { /* blok */ "a": 1 } | { "a": 1 } | Usuń komentarze blokowe /* */ |
| Otoczka Markdown | ```json
{ "a": 1 }
``` | { "a": 1 } | Usuń otoczki ```json i ``` |
| Niezamknięty łańcuch | { "a": "hello } | { "a": "hello" } | Dodaj brakujący zamykający cudzysłów łańcucha |
| Brakujący nawias | { "a": 1 | { "a": 1 } | Dopasowanie stosowe w celu dodania brakujących nawiasów zamykających |
Naprawa JSON vs Formatowanie JSON vs Walidacja JSON Schema
| Narzędzie | Co rozwiązuje | Wymagania wejściowe | Tryb awarii |
|---|---|---|---|
| Naprawa JSON | Konwersja JSON z błędami składniowymi na prawidłowy JSON | Tolerancyjne, akceptuje niestandardowy JSON | Błąd, gdy struktura jest zbyt uszkodzona do odgadnięcia |
| Formatowanie JSON | Ponowne formatowanie prawidłowego JSON | Musi być już prawidłowym JSON | SyntaxError zgłaszany bezpośrednio |
| Kompresja JSON | Usuwanie białych znaków, zmniejszanie rozmiaru | Musi być już prawidłowym JSON | SyntaxError zgłaszany bezpośrednio |
| Walidacja JSON Schema | Sprawdzanie typów/wartości pól pod kątem reguł biznesowych | Musi być już prawidłowym JSON | Lista naruszonych reguł dla każdego pola |
| JSON Merge / Sort | Scalanie z wielu źródeł / sortowanie kluczy | Musi być już prawidłowym JSON | SyntaxError zgłaszany bezpośrednio |
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