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ć

  1. 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
  2. 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
  3. 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)
  4. 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łęduPrzedPoMetoda 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ędzieCo rozwiązujeWymagania wejścioweTryb awarii
Naprawa JSONKonwersja JSON z błędami składniowymi na prawidłowy JSONTolerancyjne, akceptuje niestandardowy JSONBłąd, gdy struktura jest zbyt uszkodzona do odgadnięcia
Formatowanie JSONPonowne formatowanie prawidłowego JSONMusi być już prawidłowym JSONSyntaxError zgłaszany bezpośrednio
Kompresja JSONUsuwanie białych znaków, zmniejszanie rozmiaruMusi być już prawidłowym JSONSyntaxError zgłaszany bezpośrednio
Walidacja JSON SchemaSprawdzanie typów/wartości pól pod kątem reguł biznesowychMusi być już prawidłowym JSONLista naruszonych reguł dla każdego pola
JSON Merge / SortScalanie z wielu źródeł / sortowanie kluczyMusi być już prawidłowym JSONSyntaxError zgłaszany bezpośrednio

Authoritative References