Skip to content

JSON-LD parser crashes when @context is an object #2914

@krzys-h

Description

@krzys-h

Failing website: https://kuchniastudenta.pl/obiady-i-kolacje-dla-studentow/potrawka-z-makaronem-orzo-i-ciecierzyca

Checking if valid metadata are present:

Yes, the website has the correct metadata.

Cookbook version: 0.11.5

Problem description (if applicable):

The page cannot be imported. The error message is:

[index] Error: OCA\Cookbook\Service\JsonService::isSchemaContext(): Argument #1 ($context) must be of type string, array given, called in /var/www/html/custom_apps/cookbook/lib/Helper/HTMLParser/HttpJsonLdParser.php on line 132 in file '/var/www/html/custom_apps/cookbook/lib/Service/JsonService.php' line 74

My guess from looking at the failing code is that the importer is crashing on an Organization object with an embedded object inside @context, while the code assumes that it's always a string:

<script type="application/ld+json">
{
  "@context": {
    "@vocab": "http://schema.org/"
  },
  "@graph": [
    {
      "@type": "Organization",
      "name": "Kuchnia Studenta",
      "url": " https://kuchniastudenta.pl",
      "logo": "https://kuchniastudenta.pl/upload/config_photos/kuchnia-studenta-65f364b430a0d.png"
    }
  ]
}
</script>

I guess this is somewhat related to #1675, but in this case the problem could be resolved by just skipping unparsable JSON-LD objects, as the recipe itself doesn't use @graph:

Recipe object
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "datePublished": "2025-03-31",
  "description": "Ta pożywna potrawa dostarcza solidną dawkę białka oraz błonnika, co sprzyja sytości i wspiera trawienie. Dzięki ciecierzycy i szpinakowi jest bogata w żelazo, magnez i witaminy z grupy B, wspomagające energię i funkcjonowanie układu nerwowego. Zdrowe tłuszcze z oliwy oraz warzywa pełne antyoksydantów pomagają w walce ze stanami zapalnymi i wspierają odporność. ",
  "image": "https://kuchniastudenta.pl/photos/2025/03/20250331-142720-67ea935b4b743.webp",
  "recipeIngredient": [
    "1 łyżka oliwy/oleju",
    "1 spora cebula",
    "2 ząbki czosnku",
    "1 mała marchewka",
    "1 dość mała cukinia",
    "1 łyżeczka papryki słodkiej w proszku",
    "0.5 łyżeczki bazylii",
    "300 g ciecierzycy ze słoika lub puszki (po odsączeniu)",
    "500 ml gorącego bulionu (u nas woda z bulionem ze słoiczka)",
    "2 łyżki koncentratu pomidorowego",
    "0.5 szklanki makaronu orzo (ok 100 g)",
    "2 garście szpinaku (50 g)",
    "1 łyżka serka śmietankowego typu Almette",
    "opcjonalnie natka pietruszki do dekoracji"
  ],
  "name": "Potrawka z makaronem orzo i ciecierzycą",
  "recipeCategory": "Obiady i kolacje dla studentów",
  "recipeYield": "3",
  "nutrition": {
    "@type": "NutritionInformation",
    "calories": "410",
    "fatContent": "8",
    "carbohydrateContent": "69",
    "proteinContent": "16",
    "fiberContent": "10",
    "servingSize": 3
  },
  "recipeInstructions": [
    {
      "@type": "HowToStep",
      "text": "Cebulę obierz i pokrój w piórka lub kostkę. Wrzuć ją na rozgrzaną patelnię z oliwą/olejem."
    },
    {
      "@type": "HowToStep",
      "text": "W tym czasie stopniowo przygotowuj i dodawaj kolejno na patelnię pozostałe składniki: czosnek przeciśnięty przez praskę, marchewkę startą na tarce lub pokrojoną w drobną kosteczkę, cukinię obraną i pokrojoną w półplasterki. "
    },
    {
      "@type": "HowToStep",
      "text": "Kiedy dodasz wszystkie warzywa przypraw całość papryką słodką, bazylią, solą i pieprzem. Smaż całość jeszcze ok 5 min."
    },
    {
      "@type": "HowToStep",
      "text": "Odcedź i dodaj na patelnię ciecierzycę, makaron orzo oraz bulion i koncentrat pomidorowy. Doprowadź do wrzenia i gotuj bez przykrycia ok 15-20 min, do ugotowania się makaronu. W razie czego podlej całość wodą."
    },
    {
      "@type": "HowToStep",
      "text": "Na końcu dodaj szpinak i serek śmietankowy oraz ewentualnie przypraw."
    },
    {
      "@type": "HowToStep",
      "text": "Wyłóż potrawkę do miseczki i udekoruj posiekaną natką pietruszki."
    }
  ]
}
</script>

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions