{"id":13149,"date":"2026-09-24T12:45:00","date_gmt":"2026-09-24T10:45:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13149"},"modified":"2026-09-09T13:21:29","modified_gmt":"2026-09-09T11:21:29","slug":"tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/","title":{"rendered":"Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert"},"content":{"rendered":"<p>Eine Nutzlast, die ein Parser verweigert, ist \u00e4rgerlich und harmlos: Etwas bricht sofort, an einer Stelle, und die Behebung dauert eine Minute. Eine Nutzlast, die ein Parser annimmt und anders liest als gemeint, ist weder das eine noch das andere.<\/p>\n<p>Beide Arten haben dieselbe Quelle. JSON sieht aus wie ein JavaScript-Objekt und ist ein deutlich engeres Format &#8211; und die Unterschiede zwischen beiden sind genau die folgende Liste.<\/p>\n<figure class=\"lw-diagram\">\n<img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/json-pruefen-de.png\" width=\"1120\" height=\"580\" decoding=\"async\" loading=\"lazy\"\n     alt=\"Eine Nutzlast mit sieben nummerierten Beanstandungen im Text markiert, darunter zwei Spalten, die die f\u00fcnf mit Ausnahme von den zwei stillen trennen\"><figcaption>F\u00fcnf der sieben halten den Parser an. Die beiden anderen erzeugen ein Dokument, das sauber liest und etwas anderes bedeutet.<\/figcaption><\/figure>\n<h2>Warum ein JavaScript-Objekt kein JSON ist<\/h2>\n<p>Alles, was in JSON g\u00fcltig ist, ist g\u00fcltiges JavaScript. Umgekehrt gilt das nicht, und in diesem Abstand wohnen die Fehler.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>{                                     \/\/ JavaScript, kein JSON\n  'order_id': 9007199254740993,       \/\/ einfache Anfuehrungszeichen\n  total: 129.90,                      \/\/ Schluessel ohne Anfuehrungszeichen\n  items: [ { sku: \"SKU-42\", qty: 2, } ],   \/\/ Komma vor der Klammer\n  rabatt: NaN,                        \/\/ kein JSON-Wert\n  \/* ein Kommentar *\/\n}<\/code><\/pre>\n<p>JSON erlaubt doppelte Anf\u00fchrungszeichen und sonst keine, verlangt f\u00fcr jeden Schl\u00fcssel Anf\u00fchrungszeichen, verbietet ein Komma vor einer schliessenden Klammer, kennt keine Kommentare und genau sieben Wertarten: Objekt, Liste, Zeichenkette, Zahl, <code>true<\/code>, <code>false<\/code> und <code>null<\/code>. Es gibt kein <code>undefined<\/code>, kein <code>NaN<\/code>, kein <code>Infinity<\/code> und kein Datum.<\/p>\n<p>Der letzte Punkt geh\u00f6rt klar ausgesprochen, denn er erzeugt eine wiederkehrende \u00dcberraschung: Ein Datum hat keine eigene Darstellung. Was ankommt, ist eine Zeichenkette oder eine Zahl, die beide Seiten als Datum zu lesen vereinbart haben &#8211; und jede Uneinigkeit \u00fcber das Format ist f\u00fcr den Parser unsichtbar.<\/p>\n<h2>Die f\u00fcnf Fehler mit Ausnahme<\/h2>\n<p>Das sind die lauten, und jeder davon erzeugt dieselbe wenig hilfreiche Meldung \u00fcber eine unerwartete Marke.<\/p>\n<table style=\"width:100%;border-collapse:collapse;table-layout:auto;\">\n<thead>\n<tr>\n<th style=\"vertical-align:top;\">Fehler<\/th>\n<th style=\"vertical-align:top;\">Wie er aussieht<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">Einfache Anf\u00fchrungszeichen<\/td>\n<td>&#8216;order_id&#8217; statt &#8220;order_id&#8221;<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">Schl\u00fcssel ohne Anf\u00fchrungszeichen<\/td>\n<td>total: 129.90 statt &#8220;total&#8221;: 129.90<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">Komma vor der Klammer<\/td>\n<td>Ein Komma vor } oder ]<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">Kommentar<\/td>\n<td>Alles nach \/\/ oder zwischen \/* und *\/<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top;\">Roher Umbruch in einer Zeichenkette<\/td>\n<td>Ein Zeilenumbruch zwischen Anf\u00fchrungszeichen; n\u00f6tig ist \\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Ein sechster geh\u00f6rt in dieselbe Gruppe und ist \u00fcberhaupt nicht sichtbar: eine Byte-Reihenfolge-Marke am Dateianfang. Das sind drei unsichtbare Bytes vor der \u00f6ffnenden Klammer, und der Parser meldet eine unerwartete Marke an Position 0 &#8211; was so aussieht, als sei die Klammer das Problem. Eine Datei, die fehlerfrei aussieht und an Position 0 scheitert, hat eine, und ein Editor mit der Einstellung \u201eohne Marke speichern&#8221; entfernt sie.<\/p>\n<h2>Die zwei, die nichts melden<\/h2>\n<p>Nach diesen lohnt sich absichtlich zu suchen, denn nichts sonst wird darauf zeigen.<\/p>\n<p>Der erste ist ein doppelter Schl\u00fcssel. Die Spezifikation erlaubt ihn, und das \u00fcbliche Verhalten ist, dass der letzte gewinnt &#8211; ein Dokument mit zweimal <code>\"total\"<\/code> liest sich also sauber und tr\u00e4gt den zweiten Wert. Liegen die beiden in einer langen Nutzlast weit auseinander, entsteht eine Zahl, die weder falsch aussieht noch richtig ist.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>{ \"total\": 129.90, \"currency\": \"EUR\", \"total\": 139.90 }\n\nJSON.parse(...).total   \u2192   139.90<\/code><\/pre>\n<p>Der zweite ist eine grosse ganze Zahl. Zahlen sind in JavaScript Gleitkommazahlen, und ganze Zahlen bleiben nur bis 2^53 \u2212 1 genau. Eine Bestellnummer, eine Kennung aus einer Datenbank, eine Meta-CAPI-Kennung &#8211; sie alle \u00fcberschreiten das regelm\u00e4ssig, und der Parser rundet sie wortlos.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>JSON.parse('{\"id\": 9007199254740993}').id   \u2192   9007199254740992\n\nJSON.parse('{\"id\": \"9007199254740993\"}').id \u2192   \"9007199254740993\"<\/code><\/pre>\n<p>Die Regel daraus ist kurz: Eine Kennung ist eine Zeichenkette, immer, auch wenn sie nur aus Ziffern besteht. Gerechnet wird damit ohnehin nie, und eine Zeichenkette \u00fcbersteht jeden Parser unver\u00e4ndert.<\/p>\n<h2>Die gemeldete Position lesen<\/h2>\n<p>Die Position in der Fehlermeldung ist ein Zeichenversatz im ganzen Dokument, und in einer minifizierten Nutzlast ist das eine Zahl ohne Bedeutung.<\/p>\n<p>Der erste Schritt ist deshalb immer, das Dokument zu formatieren, und nicht, den Fehler zu suchen. Eine formatierte Nutzlast legt die Position auf eine Zeile, und die Zeile dar\u00fcber ist meist die eigentliche Fundstelle &#8211; ein fehlendes Komma f\u00e4llt bei der n\u00e4chsten Marke auf, nicht dort, wo es fehlt.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>try {\n  JSON.parse(text);\n} catch (e) {\n  const stelle = Number((e.message.match(\/position (\\d+)\/) || [])[1]);\n  if (!Number.isNaN(stelle)) {\n    console.log(text.slice(Math.max(0, stelle - 60), stelle + 60));\n    console.log(\" \".repeat(Math.min(60, stelle)) + \"^\");\n  }\n}<\/code><\/pre>\n<p>Sechzig Zeichen zu jeder Seite gen\u00fcgen in fast jedem Fall, um das Problem zu sehen, und das Dach nimmt das Abz\u00e4hlen ab. Das lohnt sich als Textbaustein aufzuheben, denn die Alternative besteht darin, einen Formatierer zu \u00f6ffnen, einzuf\u00fcgen, zu scrollen und die Position zu verlieren.<\/p>\n<h2>Auf der Kommandozeile pr\u00fcfen<\/h2>\n<p>Kommt die Nutzlast aus einer Datei oder einer Anfrage, beantwortet ein einziger Befehl die Frage.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code># gueltig? formatierte Ausgabe, oder ein Fehler mit Zeilennummer\njq . nutzlast.json\n\n# nur die Antwort, ohne den Inhalt\njq -e . nutzlast.json &gt;\/dev\/null &amp;&amp; echo \"gueltig\" || echo \"ungueltig\"\n\n# doppelte Schluessel finden - jq behaelt den letzten, das hier zaehlt sie\njq -r 'paths(scalars) | join(\".\")' nutzlast.json | sort | uniq -d\n\n# grosse Zahlen, die an Genauigkeit verlieren werden\ngrep -oE '\"[a-z_]+\": *[0-9]{16,}' nutzlast.json<\/code><\/pre>\n<p>Der dritte Befehl lohnt sich auf jeder noch nie gepr\u00fcften Nutzlast. Er listet die Pfade, die mehr als einmal vorkommen, und das ist der einzige maschinelle Weg zum stillen Fall &#8211; bei einer erzeugten Nutzlast findet er \u00fcberraschend oft etwas, denn eine Vorlage, die ein Feld in zwei Zweigen anh\u00e4ngt, erzeugt genau das.<\/p>\n<h2>Wo es am meisten z\u00e4hlt<\/h2>\n<p>Drei Orte machen aus einem kleinen JSON-Fehler etwas, das sp\u00e4ter schwer zu bemerken ist.<\/p>\n<p>Ein JSON-LD-Block in der Seite ist der erste. Ein Syntaxfehler bedeutet, dass Suchmaschinen \u00fcberhaupt keine strukturierten Daten lesen, und die Seite funktioniert weiterhin einwandfrei &#8211; nichts am Auftritt deutet also auf ein Problem hin, und der Verlust zeigt sich Wochen sp\u00e4ter als ausbleibende erweiterte Treffer. Ein Pr\u00fcfer auf der ausgelieferten Seite, nicht auf der Vorlage, ist die Kontrolle, die das f\u00e4ngt.<\/p>\n<p>Eine Conversions-API-Nutzlast ist der zweite. Die empfangende Plattform antwortet mit einem Fehler, aber dieser Fehler steht in einer Server-zu-Server-Antwort, die niemand beobachtet, und ein gescheitertes Ereignis erscheint schlicht nicht. Hier richtet der doppelte Schl\u00fcssel den gr\u00f6ssten Schaden an: Eine Nutzlast mit dem Ereigniswert zweimal sendet den falschen, und Sender wie Empf\u00e4nger halten die Anfrage f\u00fcr gelungen.<\/p>\n<p>Die Konfiguration einer Tag-Manager-Vorlage ist der dritte. Das JSON darin wird einmal beim Laden der Vorlage gelesen, und ein fehlerhaftes Feld kann die Vorlage installiert, aber wirkungslos zur\u00fccklassen. Anders ist dieser Fall darin, dass er beim Import scheitert statt zur Laufzeit &#8211; eine bessere Stelle zum Scheitern, und nur dann, wenn jemand die Meldung liest.<\/p>\n<p>Allen dreien gemeinsam: Gepr\u00fcft wird dort, wo die Nutzlast entsteht, nicht dort, wo sie verbraucht wird. Ein Bauschritt, der den Parser \u00fcber jede erzeugte Datei laufen l\u00e4sst, kostet nichts und f\u00e4ngt alle f\u00fcnf lauten Fehler ab, bevor sie die Maschine verlassen.<\/p>\n<div class=\"lw-quellen\">\n<h2>Quellen<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTML\/Reference\/Elements\/script\" target=\"_blank\" rel=\"noopener noreferrer\">MDN: the script element<\/a><\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\" target=\"_blank\" rel=\"noopener noreferrer\">MDN: JavaScript<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>F\u00fcnf Fehler lassen einen Parser das ganze Dokument verweigern und eine Position nennen, die niemand findet. Zwei weitere lassen ihn das Dokument annehmen und stillschweigend einen Wert ver\u00e4ndern &#8211; und genau nach diesen zweien lohnt sich absichtlich zu suchen.<\/p>\n","protected":false},"author":1,"featured_media":13256,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[156],"tags":[92214,92268,92235],"class_list":["post-13149","post","type-post","status-publish","format-standard","hentry","category-tutorials-de-web-entwicklung","tag-devops-de","tag-javascript-de","tag-tutorial-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert - Lukas Wojcik - Blog<\/title>\n<meta name=\"description\" content=\"Warum ein JavaScript-Objekt kein JSON ist, die f\u00fcnf Fehler mit Ausnahme und die zwei, die einen Wert ohne jede Warnung ver\u00e4ndern.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Warum ein JavaScript-Objekt kein JSON ist, die f\u00fcnf Fehler mit Ausnahme und die zwei, die einen Wert ohne jede Warnung ver\u00e4ndern.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-24T10:45:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13149-tutorial-ein-json-prufen-bevor-es-in-ein.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert\",\"datePublished\":\"2026-09-24T10:45:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/\"},\"wordCount\":954,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13149-tutorial-ein-json-prufen-bevor-es-in-ein.png\",\"keywords\":[\"DevOps\",\"JavaScript\",\"Tutorial\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/\",\"name\":\"Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13149-tutorial-ein-json-prufen-bevor-es-in-ein.png\",\"datePublished\":\"2026-09-24T10:45:00+00:00\",\"description\":\"Warum ein JavaScript-Objekt kein JSON ist, die f\u00fcnf Fehler mit Ausnahme und die zwei, die einen Wert ohne jede Warnung ver\u00e4ndern.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13149-tutorial-ein-json-prufen-bevor-es-in-ein.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/hero-13149-tutorial-ein-json-prufen-bevor-es-in-ein.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert - Lukas Wojcik - Blog","description":"Warum ein JavaScript-Objekt kein JSON ist, die f\u00fcnf Fehler mit Ausnahme und die zwei, die einen Wert ohne jede Warnung ver\u00e4ndern.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert - Lukas Wojcik - Blog","og_description":"Warum ein JavaScript-Objekt kein JSON ist, die f\u00fcnf Fehler mit Ausnahme und die zwei, die einen Wert ohne jede Warnung ver\u00e4ndern.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-24T10:45:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13149-tutorial-ein-json-prufen-bevor-es-in-ein.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert","datePublished":"2026-09-24T10:45:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/"},"wordCount":954,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13149-tutorial-ein-json-prufen-bevor-es-in-ein.png","keywords":["DevOps","JavaScript","Tutorial"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/","name":"Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13149-tutorial-ein-json-prufen-bevor-es-in-ein.png","datePublished":"2026-09-24T10:45:00+00:00","description":"Warum ein JavaScript-Objekt kein JSON ist, die f\u00fcnf Fehler mit Ausnahme und die zwei, die einen Wert ohne jede Warnung ver\u00e4ndern.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13149-tutorial-ein-json-prufen-bevor-es-in-ein.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/hero-13149-tutorial-ein-json-prufen-bevor-es-in-ein.png","width":1200,"height":630,"caption":"Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/tutorial-ein-json-prufen-bevor-es-in-ein-tag-wandert\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Ein JSON pr\u00fcfen, bevor es in ein Tag wandert"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=13149"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13149\/revisions"}],"predecessor-version":[{"id":17252,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13149\/revisions\/17252"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/13256"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13149"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13149"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}