FAQ dotyczące użytkowania narzędzi: dane, pliki i eksport
Czy dane są wysyłane, jak duży plik działa, czy coś jest przechowywane lokalnie, dlaczego chiński zamienia się w ucieczki: dziesięć pytań opisujących realne granice narzędzia JSON online.
Zbiera najczęściej zadawane pytania dotyczące narzędzi tej witryny oraz specyfikacji JSON, pogrupowane według scenariuszy, z odpowiedzią, którą można od razu zastosować, zamiast ogólnego wniosku.
Liczba artykułów: 25Czy dane są wysyłane, jak duży plik działa, czy coś jest przechowywane lokalnie, dlaczego chiński zamienia się w ucieczki: dziesięć pytań opisujących realne granice narzędzia JSON online.
Czy komentarze są dozwolone, dlaczego przecinek końcowy daje błąd, czy klucze wymagają cudzysłowów, dlaczego 9007199254740993 się zmienia — dwanaście wniosków, każdy sprawdzony w świetle RFC 8259.
Czy zapytania ścieżkowe powinny używać JSONPath czy Pointer, jak wybrać między Patch a Merge Patch, co Schema potrafi zablokować i jak wybrać wersję draftu — wszystko wyjaśnione w jednym przebiegu.
Dlaczego plik JSON o rozmiarze kilkudziesięciu MB się nie otwiera, ile kosztuje głębokie klonowanie, jak zapobiec zanieczyszczeniu __proto__ i gdzie wchodzi XSS — dziesięć wniosków pierwszej pomocy uporządkowanych według objawów.
Styl nazewnictwa, formaty czasu, semantyka null, kształty wyliczeń, formaty konfiguracji, organizacja danych testowych i konflikty scalania — dwanaście kompromisów, o które zespoły naprawdę się spierają.
RFC 8259 nie ma składni komentarzy, więc // i komentarze blokowe powodują błąd JSON.parse. Zamiast tego użyj JSON5 lub JSONC, pola _comment, description w Schema albo YAML.
Przecinki końcowe są legalne w literałach obiektowych JavaScript i zabójcze w JSON-ie. Oto dokładny błąd, gramatyka RFC 8259, która go powoduje, i trzy poprawki, które naprawdę działają.
BOM UTF-8 to trzy niewidoczne bajty, więc JSON.parse zawodzi na pierwszym znaku i zgłasza wiersz 1 kolumnę 1, przez co plik wygląda na pusty lub obcięty.
JSON ma tylko dziesiętne literały liczbowe. JSON.stringify zamienia NaN i Infinity na null bez ostrzeżenia, dlatego „pole liczbowe czasami jest null” wciąż pojawia się w produkcji.
Liczby całkowite powyżej 2^53-1 tracą precyzję w JSON.parse. Identyfikatory snowflake, numery zamówień i biginty bazodanowe wszystkie na to trafiają, więc trzymaj je jako łańcuchy od początku do końca.
Sekwencja ucieczki \u4e2d\u6587 to legalny Unicode, a nie awaria kodowania. Prawdziwy mojibake wygląda inaczej, a rozróżnienie ich decyduje, co naprawdę trzeba naprawić.
Ścisłe nadzbiory w kolejności: JSONC dodaje komentarze; JSON5 dodaje pojedyncze cudzysłowy, klucze bez cudzysłowów, przecinki końcowe i liczby szesnastkowe. Zły wybór psuje API, a nie edytor.
JSON rozdziela nawiasami, a YAML wcięciami: maszyny dostają JSON, ludzie edytujący konfigurację dostają YAML. Komentarze, kotwice i struktura wielu dokumentów nie przetrwają.
JSON Pointer to unikalny adres, który można przechowywać jako klucz; JSONPath to język zapytań. Użycie niewłaściwego psuje aktualizacje konfiguracji albo odtwarza zepsuty JSONPath.
Schemat rządzi strukturą i typami, a nie znaczeniem biznesowym. Zatrzymuje brakujące pola, złe typy i wyliczenia poza zakresem, podczas gdy reguły takie jak kwota większa od zera zostają w kodzie.
2020-12 jest aktualne i dodaje $defs, prefixItems i unevaluatedProperties, ale wiele narzędzi nadal mówi tylko draft-07. Wybierz według tego, co wspiera cały twój łańcuch narzędzi.
json-schema-to-typescript i quicktype generują .d.ts jedną komendą, ale to szkic: opcjonalność, unie, additionalProperties i daty wymagają ręcznego przejścia.
Optymalizacja w złej kolejności czyni każdą wymianę biblioteki bezużyteczną. Zmierz osobno sieć, parsowanie i renderowanie, a potem ogranicz parsowania, zmniejsz ładunki i strumieniuj.
JSON.parse traktuje __proto__ jako zwykły klucz; szkoda powstaje w rekurencyjnym scalaniu, które zapisuje do Object.prototype, więc każdy obiekt dziedziczy właściwości atakującego.
JSON nigdy nie wykonuje się sam. XSS powstaje w momencie, gdy traktujesz go jak HTML — składanie łańcuchów po stronie serwera, we frontendowy innerHTML albo osadzenie JSON-a prosto w tagu skryptu.
Nie musisz czytać polityki prywatności, aby to ustalić. Otwórz panel sieci, spróbuj strony offline i odśwież, by zobaczyć, czy cokolwiek utrwalono. Dwie minuty, trzy kontrole, zero zaufania.
Nie ma stałego limitu; ograniczeniem jest budżet pamięci twojej karty. Plik 20 MB zwykle staje się 60–100 MB po sparsowaniu, a podświetlony DOM może to podwoić.
Nagie obiekty są czyste, dopóki nie potrzebujesz metadanych; pełne koperty są bezpieczne, ale gadatliwe. W większości projektów użyj statusu HTTP dla wyników i stabilnej koperty dla danych.
Liczby epoki i łańcuchy ISO mają różne kompromisy, ale to ich mieszanie naprawdę psuje sprawę. Używaj ISO 8601 z przesunięciem, przechowuj UTC, renderuj w strefie czasowej użytkownika.
`null` mówi, że pole istnieje bez wartości; pominięcie mówi, że pole nie istnieje. Treści PATCH, scalanie konfiguracji i wstępne wypełnianie formularzy to miejsca, w których różnica boli.