JSON-LD Schema Markup: Complete SEO-implementatiegids

Laatste update 28-03-2026
Gestructureerde data Rijke resultaten

JSON-LD gestructureerde data vertelt zoekmachines precies waar uw content over gaat. De juiste schema markup opent rijke resultaten in Google Zoeken — FAQ dropdowns, artikelcarrousels, breadcrumb trails en meer — direct in de zoekresultaten.

Deze gids behandelt alle belangrijke schema types met echte C# implementatiecode en de exacte JSON-output die het genereert. Elk voorbeeld komt rechtstreeks uit een productie Blazor-codebase.

Illustratie die toont hoe JSON-LD gestructureerde data rijke resultaten voedt in Google Zoeken, inclusief FAQ dropdowns, artikelcarrousels en breadcrumb-navigatie
JSON-LD gestructureerde data is de meest onderhoudsvriendelijke manier om schema markup toe te voegen — het staat in een script-tag, volledig gescheiden van uw HTML.

Wat is JSON-LD en waarom het belangrijk is voor SEO

JSON-LD (JavaScript Object Notation for Linked Data) is een methode om gestructureerde data te coderen met het JSON-formaat. Zoekmachines zoals Google lezen deze data om de betekenis van uw content te begrijpen, niet alleen de zoekwoorden.

Wanneer Google uw gestructureerde data kan lezen, komt uw pagina in aanmerking voor rijke resultaten — visueel verbeterde zoekvermeldingen met beoordelingen, FAQ dropdowns, artikelafbeeldingen, breadcrumb trails en meer, direct in de zoekresultaten. Rijke resultaten zorgen consequent voor hogere doorklikratio’s dan gewone blauwe links.

Google raadt officieel JSON-LD aan boven Microdata en RDFa omdat het overal op de pagina geplaatst kan worden — ook in de head — en geen aanpassing van bestaande HTML-elementen vereist. De gestructureerde data is volledig losgekoppeld van uw markup.

In aanmerking komen voor rijke resultaten

Geldige schema markup maakt uw pagina’s geschikt voor FAQ dropdowns, artikelcarrousels, breadcrumb trails en andere rijke functies in Google Zoeken.

Meer klikken met dezelfde ranking

Semantische duidelijkheid

Gestructureerde data verwijdert onduidelijkheid. Een pagina over een vraag-en-antwoord onderwerp wordt expliciet als FAQPage aangegeven, zodat Google het als een FAQ rijk resultaat weergeeft.

Vertel zoekmachines precies wat u heeft

Geen HTML-wijzigingen

JSON-LD staat in een script-tag in de head. Het raakt uw visuele HTML nooit aan, dus schema toevoegen of bijwerken brengt geen risico op het breken van lay-outs of toegankelijkheid met zich mee.

Duidelijke scheiding van verantwoordelijkheden

JSON-LD versus Microdata versus RDFa

Er bestaan drie formaten om schema.org gestructureerde data in webpagina’s in te bedden. Alle drie worden door Google begrepen, maar ze verschillen sterk in toepassing en onderhoud.

Formaat Syntaxlocatie Onderhoud SEO-impact Google-aanbeveling
JSON-LD Apart script-tag Eenvoudig — geen HTML-wijzigingen Volledige ondersteuning rijke resultaten Aanbevolen
Microdata Inline HTML-attributen Hoog — sterk gekoppeld aan markup Volledige ondersteuning rijke resultaten Ondersteund
RDFa Inline HTML-attributen Hoog — sterk gekoppeld aan markup Volledige ondersteuning rijke resultaten Ondersteund

Waarom JSON-LD wint op onderhoudbaarheid

Bij Microdata en RDFa zijn schema-attributen verspreid door uw HTML. Een ontwerpwijziging die een template herstructureert kan gestructureerde data onopgemerkt breken. JSON-LD is een zelfstandige blok — update het script één keer en de HTML blijft onaangetast.

Aanbevolen cursus webontwikkeling

Beheers moderne webontwikkeling met SEO best practices

Tip van mij Ik vond deze cursus waardevol om te begrijpen hoe technische SEO, gestructureerde data en moderne webstandaarden samenwerken in praktijkprojecten.

  • Leer HTML meta tags, Open Graph en JSON-LD gestructureerde data toepassen.
  • Praktische SEO-strategieën voor betere zichtbaarheid en ranking in zoekmachines.
  • Praktische projecten over responsive design en prestatieoptimalisatie.
Bekijk de cursus webontwikkeling

Belangrijkste schema types en wanneer te gebruiken

Schema.org definieert honderden types, maar een paar dekken het merendeel van webcontent. Dit zijn de types die rijke resultaten in Google Zoeken mogelijk maken.

Schema type Gebruikssituatie Type rijk resultaat
Article Blogposts, gidsen, nieuwsartikelen Artikelcarrousel, Topverhalen
FAQPage Pagina’s met vraag/antwoord-paren FAQ dropdown in zoekresultaten
BreadcrumbList Elke pagina met een navigatiehiërarchie Breadcrumb trail onder de URL
WebSite / WebPage Startpagina, hubpagina’s, landingspagina’s Sitelinks zoekvak, entiteitsherkenning
SoftwareApplication Apps, tools, softwareproducten App rijk resultaat met beoordeling en prijs

Schema.org vocabulaire

Alle schema types zijn gedefinieerd op schema.org. De @context eigenschap in elk JSON-LD blok vertelt parsers om eigenschapsnamen te interpreteren volgens het schema.org vocabulaire. U kunt meerdere schema types op één pagina combineren — Google verwerkt elk scriptblok onafhankelijk.

Implementatie van Article schema

Article schema is het belangrijkste type voor contentgerichte sites. Het vertelt Google de titel, beschrijving, publicatiedatum, auteur en uitgever van een stuk content — de minimale set eigenschappen voor rijke resultaatgeschiktheid.

De onderstaande C# klasse is het serialisatiemodel. Elke eigenschap correspondeert direct met het JSON-LD veld via JsonPropertyName attributen.

C#ArticleSchema C# klasse (JsonLdService.cs)
private class ArticleSchema
{
    [JsonPropertyName("@context")]
    public string Context { get; } = "https://schema.org";

    [JsonPropertyName("@type")]
    public string Type { get; } = "Article";

    [JsonPropertyName("headline")]
    public string? Headline { get; set; }

    [JsonPropertyName("description")]
    public string? Description { get; set; }

    [JsonPropertyName("image")]
    public string? Image { get; set; }

    [JsonPropertyName("url")]
    public string? Url { get; set; }

    [JsonPropertyName("author")]
    public Organization? Author { get; set; }

    [JsonPropertyName("publisher")]
    public ArticlePublisher? Publisher { get; set; }

    [JsonPropertyName("datePublished")]
    public string? DatePublished { get; set; }

    [JsonPropertyName("dateModified")]
    public string? DateModified { get; set; }

    [JsonPropertyName("articleSection")]
    public List<string>? ArticleSection { get; set; }
}

De verplichte eigenschappen zijn: headline, image, datePublished, dateModified, author en publisher. De articleSection array is optioneel maar aanbevolen — het geeft Google de thematische reikwijdte van het artikel aan.

HTMLArticle schema JSON-LD output
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "JSON-LD Schema Markup: Complete SEO Implementation Guide",
  "description": "Learn how to implement JSON-LD structured data for Article, FAQPage, BreadcrumbList, WebSite, and WebPage schema types.",
  "image": "https://ghostlyinc.com/images/web/jsonldguide/opengraph/hero-1200.png",
  "url": "https://ghostlyinc.com/en/json-ld-schema-markup-seo-guide/",
  "author": {
    "@type": "Organization",
    "name": "GhostlyInc",
    "url": "https://ghostlyinc.com"
  },
  "publisher": {
    "@type": "Organization",
    "name": "GhostlyInc",
    "logo": {
      "@type": "ImageObject",
      "url": "https://ghostlyinc.com/images/logo.png"
    }
  },
  "datePublished": "2026-03-28T10:00:00Z",
  "dateModified": "2026-03-28T10:00:00Z",
  "articleSection": [
    "What is JSON-LD and why it matters for SEO",
    "JSON-LD vs. Microdata vs. RDFa",
    "Core schema types and when to use them",
    "Article schema implementation"
  ]
}
</script>

De auteur en uitgever zijn beide van het type Organization. Voor persoonlijke blogs kan de auteur een Person zijn met een naam en url.

FAQ schema voor rijke snippets

FAQPage schema creëert FAQ rijke resultaten — uitklapbare vraag/antwoord-paren die direct onder uw pagina in Google Zoeken worden getoond. Dit vergroot de verticale ruimte van uw resultaat, wat zichtbaarheid en doorklikratio’s verbetert.

De FaqPage klasse bevat een lijst met vraag-entiteiten. Elke entiteit moet een naam (de vraag) en een acceptedAnswer met een tekst-eigenschap (het antwoord) hebben.

C#FaqPage C# klasse (JsonLdService.cs)
private class FaqPage
{
    [JsonPropertyName("@context")]
    public string Context { get; } = "https://schema.org";

    [JsonPropertyName("@type")]
    public string Type { get; } = "FAQPage";

    [JsonPropertyName("@id")]
    public string? Id { get; set; }

    [JsonPropertyName("name")]
    public string? Name { get; set; }

    [JsonPropertyName("mainEntity")]
    public List<FaqEntity>? MainEntity { get; set; }
}

private class FaqEntity
{
    [JsonPropertyName("@type")]
    public string Type { get; } = "Question";

    [JsonPropertyName("name")]
    public string? Name { get; set; }

    [JsonPropertyName("acceptedAnswer")]
    public FaqAnswer? AcceptedAnswer { get; set; }
}

private class FaqAnswer
{
    [JsonPropertyName("@type")]
    public string Type { get; } = "Answer";

    [JsonPropertyName("text")]
    public string? Text { get; set; }
}

De output is een enkel FAQPage blok met een mainEntity array. Elk item is van het type Question met een acceptedAnswer. Google ondersteunt tot tien vragen per pagina voor rijke resultaten.

HTMLFAQ schema JSON-LD output
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "@id": "https://ghostlyinc.com/en/json-ld-schema-markup-seo-guide/#faq",
  "name": "Frequently asked questions",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is the difference between JSON-LD and Microdata?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "JSON-LD is a separate script block that lives in the head and does not touch HTML. Microdata adds attributes directly to HTML elements. Google recommends JSON-LD for its maintainability."
      }
    },
    {
      "@type": "Question",
      "name": "How many FAQ questions can I mark up?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Google supports up to ten questions per page for the FAQ rich result. Additional questions are still valid schema but will not appear in the search result enhancement."
      }
    }
  ]
}
</script>

De @id op het FAQPage blok koppelt het schema aan een specifieke URL-fragment. Dit is best practice voor pagina’s met meerdere schema blokken, omdat het parsers helpt elke entiteit eenduidig te identificeren.

WebSite en WebPage schema

WebSite en WebPage schema vormen de fundamentele entiteitsstructuur voor een site. WebSite identificeert de site zelf — naam, URL, taal en uitgever. WebPage beschrijft de individuele pagina en koppelt deze aan de bovenliggende WebSite via de isPartOf-relatie.

Beide klassen volgen hetzelfde JSON-LD patroon. De @id op WebSite is de domeinroot; de @id op WebPage is de volledige pagina-URL.

C#WebSiteSchema en WebPageSchema C# klassen (JsonLdService.cs)
private class WebSiteSchema
{
    [JsonPropertyName("@context")]
    public string Context { get; } = "https://schema.org";

    [JsonPropertyName("@type")]
    public string Type { get; } = "WebSite";

    [JsonPropertyName("name")]
    public string? Name { get; set; }

    [JsonPropertyName("url")]
    public string? Url { get; set; }

    [JsonPropertyName("inLanguage")]
    public string? InLanguage { get; set; }

    [JsonPropertyName("publisher")]
    public Organization? Publisher { get; set; }
}

private class WebPageSchema
{
    [JsonPropertyName("@context")]
    public string Context { get; } = "https://schema.org";

    [JsonPropertyName("@type")]
    public string Type { get; } = "WebPage";

    [JsonPropertyName("@id")]
    public string? Id { get; set; }

    [JsonPropertyName("name")]
    public string? Name { get; set; }

    [JsonPropertyName("description")]
    public string? Description { get; set; }

    [JsonPropertyName("url")]
    public string? Url { get; set; }

    [JsonPropertyName("inLanguage")]
    public string? InLanguage { get; set; }

    [JsonPropertyName("isPartOf")]
    public WebSiteReference? IsPartOf { get; set; }
}

De inLanguage eigenschap gebruikt BCP 47 taalcodes (bijv. en, de, fr). De isPartOf link koppelt de WebPage aan de WebSite entiteit door te verwijzen naar de @id van het domein. Dit helpt Google een compleet entiteitsmodel van uw site te bouwen.

HTMLWebSite en WebPage schema JSON-LD output
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "GhostlyInc",
  "url": "https://ghostlyinc.com",
  "inLanguage": "en",
  "publisher": {
    "@type": "Organization",
    "name": "GhostlyInc",
    "url": "https://ghostlyinc.com"
  }
}
</script>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebPage",
  "@id": "https://ghostlyinc.com/en/json-ld-schema-markup-seo-guide/",
  "name": "JSON-LD Schema Markup: Complete SEO Implementation Guide",
  "description": "Learn how to implement JSON-LD structured data for Article, FAQPage, BreadcrumbList, WebSite, and WebPage schema types.",
  "url": "https://ghostlyinc.com/en/json-ld-schema-markup-seo-guide/",
  "inLanguage": "en",
  "isPartOf": {
    "@type": "WebSite",
    "@id": "https://ghostlyinc.com"
  }
}
</script>

Beste implementatiepraktijken

De WrapInScriptTag helper-methode is het enige punt waar JSON-strings geldige JSON-LD blokken worden. Het wikkelt elke geserialiseerde schema payload in de vereiste script-tag met het MIME-type application/ld+json.

Dit is de methode die alle schema-builders in de service aanroepen — Article, FAQPage, BreadcrumbList, WebSite en WebPage geven allemaal hun geserialiseerde JSON door aan dezezelfde utility.

C#WrapInScriptTag methode (JsonLdService.cs)
private static MarkupString WrapInScriptTag(string json)
{
    var builder = new StringBuilder();
    builder.AppendLine("<script type=\"application/ld+json\">");
    builder.AppendLine(json);
    builder.AppendLine("</script>");

    return new MarkupString(builder.ToString());
}

Het SchemaContext-object is het startpunt voor de BuildSchema-methode. Het bevat alle data die nodig is om de volledige set schema blokken voor een pagina te bouwen — type, metadata, FAQ-lijst, breadcrumb-hiërarchie en artikeldata.

C#BuildSchema dispatch-logica (JsonLdService.cs)
public SchemaBuildResult BuildSchema(SchemaContext context)
{
    if (context == null) throw new ArgumentNullException(nameof(context));

    var jsonLd = new List<MarkupString>();

    switch (context.PageType)
    {
        case PageSchemaType.Home:
            jsonLd.Add(WebSite(context));
            jsonLd.Add(WebPage(context));
            break;
        case PageSchemaType.Article:
            jsonLd.Add(Article(context.Article!));
            break;
        case PageSchemaType.Tool:
            jsonLd.Add(WebPage(context));
            jsonLd.Add(SoftwareApplication(context.SoftwareApplication!));
            break;
        case PageSchemaType.Hub:
            jsonLd.Add(WebPage(context));
            break;
    }

    if (context.Faqs != null && context.Faqs.Count > 0)
    {
        jsonLd.Add(FAQ(context.Faqs.ToList(), context.FaqTitle, context.Url));
    }

    if (context.ParentHierarchy.Count > 0)
    {
        jsonLd.Add(BreadcrumbList(BuildBreadcrumbItems(context)));
    }

    return new SchemaBuildResult(jsonLd, context.PageType == PageSchemaType.Article);
}

De dispatch-switch maakt de schema builder samenstelbaar. FAQs en breadcrumbs worden altijd toegevoegd als ze aanwezig zijn, ongeacht het paginatype. Dit betekent dat elk paginatype een FAQ-blok of breadcrumb trail kan krijgen zonder de kern dispatch-logica te wijzigen.

Testen en valideren van uw schema

Geldige JSON-LD syntax garandeert niet dat u in aanmerking komt voor rijke resultaten. De tools van Google controleren zowel de syntax als of uw content voldoet aan het beleid voor elk type rijk resultaat.

Rich Results Test

Gebruik search.google.com/test/rich-results om elke URL te testen of plak ruwe HTML. Google bevestigt welke rijke resultaattypes zijn gedetecteerd en markeert ontbrekende verplichte eigenschappen.

Google's officiële geschiktheidschecker

Schema Markup Validator

validator.schema.org controleert uw markup tegen de schema.org-specificatie, onafhankelijk van Google's beleid voor rijke resultaten. Handig om typefouten en type-onverenigbaarheden te vinden.

Schema.org syntaxvalidatie

Google Search Console

De sectie Verbeteringen in Search Console rapporteert schemafouten en waarschuwingen op grote schaal over uw geïndexeerde pagina’s. Gebruik het voor continue monitoring na de eerste validatie.

Grootschalig monitoren na lancering

Veelgestelde vragen

Antwoorden op veelgestelde vragen over JSON-LD schema markup