UTILS.
100% w przeglądarce
{ }

Obiekt JS na ścisły JSON

Napraw luźny literał obiektu JavaScript — klucze bez cudzysłowów, pojedyncze cudzysłowy, końcowe przecinki, komentarze — w ścisły prawidłowy JSON, bez eval.

— wynik pojawi się tutaj —

O tym narzędziu

Narzędzie Obiekt JS na ścisły JSON naprawia luźny literał obiektu JavaScript lub w stylu JSON5 w ścisły, prawidłowy JSON. Jest zbudowane na ręcznie napisanym tokenizerze — nigdy nie używa eval ani new Function — więc jest bezpieczne pod ścisłą Content Security Policy i bezpieczne do wklejania niezaufanego tekstu. Wszystko działa w Twojej przeglądarce.

Akceptuje rzeczy, które prawdziwy JSON odrzuca: klucze identyfikatorów bez cudzysłowów, łańcuchy w pojedynczych cudzysłowach, końcowe przecinki przed ] lub }, komentarze // liniowe i /* blokowe */, liczby szesnastkowe (0xFF), literały ósemkowe i binarne, liczby z wiodącym plusem i wiodącą kropką (+1, .5) oraz wartości undefined, NaN i Infinity. Klucze są ponownie ujmowane w cudzysłowy podwójne, łańcuchy są poprawnie ponownie zabezpieczane, komentarze i końcowe przecinki są usuwane, a liczby są normalizowane do zwykłych liczb JSON. Wybierasz, jak traktować undefined (konwertuj na null lub usuń klucz) i liczby nieskończone (konwertuj na null lub zgłoś błąd), a następnie wartość jest ponownie serializowana za pomocą JSON.stringify z wybranym wcięciem — 2 spacje, 4 spacje, tabulatory lub zminifikowane.

Gdy wejścia nie można sparsować, narzędzie zgłasza pierwszy błąd składni z jego wierszem i kolumną, abyś mógł szybko znaleźć problem. To uzupełnia ścisły formater JSON, który po prostu odrzuca luźne wejście — tutaj celem jest ocalenie skopiowanego wyjścia konsoli, fragmentów konfiguracji i ręcznie edytowanych obiektów w JSON, który zaakceptuje każdy parser.

Najczęściej zadawane pytania

Jaką luźną składnię akceptuje?
Klucze bez cudzysłowów, łańcuchy w pojedynczych cudzysłowach, końcowe przecinki, komentarze // i /* */, liczby szesnastkowe/ósemkowe/binarne, liczby z wiodącym plusem i wiodącą kropką oraz literały undefined, NaN i Infinity — powszechne rzeczy, które czynią skopiowane obiekty JS nieprawidłowymi jako JSON.
Czy używa eval do parsowania?
Nie. Używa ręcznie napisanego tokenizera i parsera rekurencyjnie zstępującego, nigdy eval ani new Function, więc działa pod ścisłą Content Security Policy i jest bezpieczne dla niezaufanego wejścia. Zawsze produkuje tylko dane, nigdy nie uruchamia kodu.
Jak obsługiwane są undefined, NaN i Infinity?
JSON nie ma takich wartości. Wybierasz: undefined może stać się null lub mieć usunięty klucz, a NaN/Infinity mogą stać się null lub zgłosić błąd. Utrzymuje to wyjście ściśle prawidłowym JSON w każdym przypadku.
Co dzieje się, gdy wejście jest nieprawidłowe?
Parser zatrzymuje się przy pierwszym prawdziwym błędzie składni i zgłasza go z wierszem i kolumną, w których wystąpił, abyś mógł zlokalizować i naprawić problematyczny znak, zamiast zgadywać.

Więcej narzędzi