Sześć próbek JSON-LD w dwóch parserach
Maciej Zmitrukiewicz · Pakiet do artykułu Schema validator: jak sprawdzić JSON-LD i wyniki rozszerzone
To materiał do artykułu. We wrześniu 2026 przepuściłem sześć krótkich plików JSON-LD przez dwa parsery, żeby zobaczyć, ile błędów złapie sam parser JSON. JSON.parse przyjął 4 z 5 błędnych próbek, a parser z kontrolą powtórzonych kluczy przyjął 3 z 5.
Na co patrzyłem
Przygotowałem jeden poprawny blok Article i pięć jego wersji, każdą z jednym błędem: przecinek przed końcem obiektu, literówkę w typie, literówkę we właściwości, powtórzony klucz headline i niemożliwą datę. Każdy plik czytałem przez JSON.parse w Node.js oraz przez parser w Pythonie, który odrzuca powtórzone klucze.
Literówka w @type i zła data dalej są poprawnym JSON-em. Złapie je dopiero narzędzie, które zna słownik Schema.org i reguły dla typów danych, więc parser JSON jest tylko pierwszą z kilku warstw kontroli.
Wyniki
| Próbka | Co jest w niej źle | JSON.parse | Parser z kontrolą duplikatów |
|---|---|---|---|
Kontrolny Article | Nic | przyjął | przyjął |
| Przecinek na końcu | Błąd składni JSON | odrzucił | odrzucił |
Artilce | Literówka w @type | przyjął | przyjął |
hedline | Literówka we właściwości | przyjął | przyjął |
Powtórzony headline | Dwa klucze o tej samej nazwie | przyjął i zostawił ostatnią wartość, „Drugi” | odrzucił |
2026-99-99 | Niemożliwa data | przyjął | przyjął |
Najciekawsza jest próbka z powtórzonym tytułem. JSON.parse nie zgłosił błędu, tylko po cichu zachował drugą wartość, więc pierwsza zniknęła z obiektu.
Czego te dane nie pokażą
- Próby obejmują tylko parsery JSON. Rich Results Test, Schema Markup Validator, Googlebot i Search Console nie brały w nich udziału.
- Sześć próbek dobrałem ręcznie, żeby pokazać typowe błędy, więc „4 z 5” opisuje te pliki, a nie odsetek błędów na prawdziwych stronach.
- Parser nie oceni, czy dane zgadzają się z treścią strony ani czy strona kwalifikuje się do wyniku rozszerzonego.
- To, jak Google czyta JSON-LD z odpowiedzi HTTP i z DOM po JavaScripcie, opisuję w artykule na podstawie dokumentacji Google. Google może przetworzyć JSON-LD obecny w DOM po renderowaniu, ale nie klika elementów strony, żeby odsłonić treść.
Pliki
parser-lab-results.json: wynik każdej próbki w obu parserach razem z komunikatami błędów (Node.js 22.16.0)karta-walidacji.md: pusta karta walidacji i retestu dla jednego adresukontrola-szablonu.md: pusta lista do sprawdzenia, czy kilka generatorów schema nie publikuje sprzecznych danych