$doc = (object)array(
  "http://schema.org/name" => "Manu Sporny",
  "http://schema.org/url" => (object)array("@id" => "http://manu.sporny.org/"),
  "http://schema.org/image" => (object)array("@id" => "http://manu.sporny.org/images/manu.png")
);

$context = (object)array(
  "name" => "http://schema.org/name",
  "homepage" => (object)array("@id" => "http://schema.org/url", "@type" => "@id"),
  "image" => (object)array("@id" => "http://schema.org/image", "@type" => "@id")
);

// compact a document according to a particular context
// see: http://json-ld.org/spec/latest/json-ld/#compacted-document-form
$compacted = jsonld_compact($doc, $context);

echo json_encode($compacted, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
/* Output:
{
  "@context": {...},
  "image": "http://manu.sporny.org/images/manu.png",
  "homepage": "http://manu.sporny.org/",
  "name": "Manu Sporny"
}


De vraag is, ik heb een lijst met leden, moet ik dan in de body een loop aanmaken, die op 1 pagina 50 keer het volgende uitprint?

echo json_encode($compacted, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
Doel je op de het body-element van HTML?
Dan is het antwoord nee. En JSON string is niet te combineren met HTML-output.
Lijkt mij sterk, want een JSON-reader kent geen HTML. En JSON is een totaal andere content-type dan HTML.

Laat je URL met je JSON-string eens zien?
Kan geen reclame maken voor mijn URL hier op dit forum. Ik heb gewoon in een loop de volgende output:


<script type="application/ld+json">
{
  "@context"			:"http://schema.org",
  "@type"				:"BlogPosting",
  "editor"				:"<?=$uname?>", 
  "publisher": {	
   "@type"				: "person",
   "name"				:"<?=$uname?>" 
  },
  "genre"				:"About <?=$r['reg1']?>", 
  "keywords"			:"<?=$r['reg1']?>",   
  "datePublished"		:"<?=$r['datum']?>",
  "dateCreated"			:"<?=$r['datum']?>",
  "headline"			:"<?=$r['title']?>",
  "description"			:"<?=$short?>",
  "articleBody"			: "<?=$long?>",
  "image": {
	  "@type"		: "ImageObject",
	  "url"			: "<?=HTML_ROOT?>blogs/<?=$r['reg1Url']?>/images/<?=$r['seo_title']?>_50.jpg",
	  "height"		: "50",
	  "width"		: "50"
	  
  },
  "url"					:"<?=HTML_ROOT?>blog/<?=$r['reg1Url']?>/<?=$r['seo_title']?>",
"author": {
    "@type": "Person",
    "name": "<?=$uname?>"
  }  
}
</script>
Dat is geen output, maar input. Ik zie ook ongeparste PHP-variabelen.

Wat laat je browser zelf zien?
Tuurlijk niet, hij toont die code gewoon in de browser, dus dat put hij out naar de browser.

alle php variabelen zijn gevuld.

ik krijg alleen 1 foutmelding in die code:

Het kenmerk publisher.itemtype heeft een ongeldige waarde.
Wees eens niet geheimzinnig, en laat die JSON-output eens zien. Desnoods met dummy-tekst of als een aparte testcase in een los bestand.

Edit:
Het is dus JSON LD (Linked Data), dat maakt het dus weer anders dan het gewone JSON.
Ik ben niet geheimzinnig, het is erg normaal dat mensen niet hun domeinnamen etc tonen om niet hier indexeert te worden, en de output kan je toch gewoon zien, alleen de HTML_ROOT etc zijn domeinennamen
Dat snap ik, maar je kan prima relevante output tonen in het forum. Of een 'gesplitste' URL?

Inmiddels zie ik ook dat het JSON+LD is i.p.v. het gewone JSON. Dat verandert de zaak, en dat kan wel in je HTML-document.

Reageren