Zum Inhalt springen

JSON-LD expandieren — Numio

Expandiert ein JSON-LD-Dokument mit jsonld.js: Der @context wird angewendet und entfernt, Terms werden zu vollständigen IRIs, und jeder Wert wird in ein Array aus @value- oder @id-Objekten verpackt. Schlüssel, die auf keine IRI abgebildet werden, werden verworfen.

Prüfen, zu welchen IRIs deine schema.org- oder eigenen @context-Terms tatsächlich aufgelöst werden.

JSON-LD

Expanded

Wann sie hilft

  • Prüfen, zu welchen IRIs deine schema.org- oder eigenen @context-Terms tatsächlich aufgelöst werden.
  • Strukturierte Daten debuggen, bei denen eine Eigenschaft stillschweigend verschwindet, weil sie im Context nicht definiert ist.

Anwendung

  1. Füge ein JSON-LD-Dokument mit seinem @context in den Editor JSON-LD ein.
  2. Lies das expandierte Array: Jeder Knoten listet vollständige Eigenschafts-IRIs mit Werten in Arrays.
  3. Vergleiche mit deiner Eingabe; jede Eigenschaft, die in der Ausgabe fehlt, wurde vom Context nicht abgebildet.

JSON-LD

{
  "@context": {
    "name": "http://schema.org/name",
    "knows": {"@id": "http://schema.org/knows", "@type": "@id"},
    "homepage": {"@id": "http://schema.org/url", "@type": "@id"}
  },
  "@id": "http://example.org/jane",
  "@type": "http://schema.org/Person",
  "name": "Jane Doe",
  "homepage": "http://janedoe.example",
  "knows": "http://example.org/john"
}

Expandiertes JSON-LD

[
  {
    "@id": "http://example.org/jane",
    "@type": [
      "http://schema.org/Person"
    ],
    "http://schema.org/url": [
      {
        "@id": "http://janedoe.example"
      }
    ],
    "http://schema.org/knows": [
      {
        "@id": "http://example.org/john"
      }
    ],
    "http://schema.org/name": [
      {
        "@value": "Jane Doe"
      }
    ]
  }
]

Details und Einschränkungen

Die Expansion läuft im Browser mit dem Paket jsonld. Ein entfernter @context wie https://schema.org/ (im Standardbeispiel verwendet) wird von deinem Browser heruntergeladen; schlägt das fehl (offline, CORS), zeigt die Seite einen Fehler mit der URL.

"@type": "@id" in einer Term-Definition macht aus einem String-Wert eine {"@id": ...}-Referenz statt eines Literals.

Die Ausgabe ist immer ein Array auf oberster Ebene, auch bei einem einzelnen Knoten.

FAQ

Warum sind einige meiner Eigenschaften verschwunden?

Die Expansion verwirft Schlüssel, die weder im @context definiert noch absolute IRIs sind. Ist zum Beispiel nur name abgebildet, wird ein Schlüssel nickname aus der Ausgabe entfernt.

Kann ich den schema.org-Context verwenden?

Ja. "@context": "https://schema.org/" funktioniert, wenn dein Browser ihn abrufen kann. Für die Offline-Nutzung schreibe die Term-Definitionen inline wie im Beispiel.

Warum steht jeder Wert in einem Array?

Die expandierte Form verwendet für Eigenschaftswerte und @type immer Arrays, damit Prozessoren einzelne und mehrere Werte gleich behandeln können.

Spezifikationen und Referenzen