Javascript 访问JSON-LD对象会产生错误,这是Google structure数据测试工具
我正在迭代JSON-LD对象以创建一个用户评论列表,这在JSFiddle()中是有效的,但当我使用示例和Google结构化数据测试工具将其添加到我的页面时,我得到了一个错误“JSON-LD语法错误:值、对象或数组预期”。代码没有运行。请帮我理解为什么 我试图改变Javascript 访问JSON-LD对象会产生错误,这是Google structure数据测试工具,javascript,json-ld,google-schemas,structured-data,Javascript,Json Ld,Google Schemas,Structured Data,我正在迭代JSON-LD对象以创建一个用户评论列表,这在JSFiddle()中是有效的,但当我使用示例和Google结构化数据测试工具将其添加到我的页面时,我得到了一个错误“JSON-LD语法错误:值、对象或数组预期”。代码没有运行。请帮我理解为什么 我试图改变 var arrayLength = jsonld['review'].length; 差不多 JSON.parse(document.querySelector('script[type="application/ld+json
var arrayLength = jsonld['review'].length;
差不多
JSON.parse(document.querySelector('script[type="application/ld+json"]').innerText)
及
但代码仍然无法运行,GSDTT中的错误仍然存在。
请帮助理解我做错了什么
这很有效
var jsonld = {
"@context": "http://schema.org",
"@type": "Product",
"image": "https://www.myurl.com/media/db3e3b23f81585_M.jpg",
"name": "Test name",
"description": "Test review desc.",
"offers": {
"@type": "AggregateOffer",
"availability": "http://schema.org/InStock",
"highPrice": "5195.00",
"lowPrice": "2595.00",
"offerCount": "1",
"priceCurrency": "ZAR",
"priceValidUntil": "2020-09-30",
"url": "https://www.myurl.com/"
}
,
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "5",
"bestRating": "5",
"reviewCount": "2"
},
"review": [
{
"@type": "Review",
"author": " Meagen",
"description": "Test review desc",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "1"
}},
{
"@type": "Review",
"author": " Ericka",
"description": "Test review desc",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "1"
}}
]}
var arrayLength = jsonld['review'].length;
outline = document.createElement('div');
outline.className = 'outline';
document.getElementsByTagName('body')[0].appendChild(outline);
for (i = 0; i < arrayLength; i++) {
inside = document.createElement('div');
inside.className = 'inside';
document.getElementsByClassName('outline')[0].appendChild(inside);
//desc
desc = document.createElement('div');
desc.className = 'desc';
desc.innerHTML = JSON.stringify(jsonld.review[i].description);
document.getElementsByClassName('inside')[i].appendChild(desc);
//auth
auth = document.createElement('p');
auth.className = 'author';
auth.innerHTML = jsonld.review[i].author + " rated this tour " + jsonld.review[i].reviewRating.ratingValue + " out of 5";
document.getElementsByClassName('inside')[i].appendChild(auth);
//score
score = document.createElement('p');
score.className = 'score';
score.innerHTML = jsonld.review[i].reviewRating.ratingValue + " out of 5";
document.getElementsByClassName('inside')[i].appendChild(score);
}
var jsonld={
“@context”:”http://schema.org",
“@type”:“产品”,
“图像”:https://www.myurl.com/media/db3e3b23f81585_M.jpg",
“名称”:“测试名称”,
“说明”:“测试评审说明”,
“提议”:{
“@type”:“AggregateOffer”,
“可用性”:http://schema.org/InStock",
“高价”:“5195.00”,
“低价”:“2595.00”,
“报价金额”:“1”,
“价格货币”:“南非兰特”,
“priceValidUntil”:“2020-09-30”,
“url”:”https://www.myurl.com/"
}
,
“聚合”:{
“@type”:“聚合”,
“额定值”:“5”,
“最佳评级”:“5”,
“reviewCount”:“2”
},
“审查”:[
{
“@type”:“Review”,
“作者”:“米根”,
“说明”:“测试评审说明”,
“复习”:{
“@type”:“评级”,
“最佳评级”:“5”,
“额定值”:“5”,
“工作”:“1”
}},
{
“@type”:“Review”,
“作者”:“埃里卡”,
“说明”:“测试评审说明”,
“复习”:{
“@type”:“评级”,
“最佳评级”:“5”,
“额定值”:“5”,
“工作”:“1”
}}
]}
var arrayLength=jsonld['review'].长度;
大纲=document.createElement('div');
outline.className='outline';
document.getElementsByTagName('body')[0].appendChild(大纲);
对于(i=0;i
但当我使用脚本标记type=“application/ld+json将其添加到页面时,它不会
<script id="jsonData" type="application/ld+json">
var jsonld = {
"@context": "http://schema.org",
"@type": "Product",
"image": "https://www.myurl.com/media/db3e3b23f81585_M.jpg",
"name": "Test name",
"description": "Test review desc.",
"offers": {
"@type": "AggregateOffer",
"availability": "http://schema.org/InStock",
"highPrice": "5195.00",
"lowPrice": "2595.00",
"offerCount": "1",
"priceCurrency": "ZAR",
"priceValidUntil": "2020-09-30",
"url": "https://www.myurl.com/"
}
,
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "5",
"bestRating": "5",
"reviewCount": "2"
},
"review": [
{
"@type": "Review",
"author": " Meagen",
"description": "Test review desc",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "1"
}},
{
"@type": "Review",
"author": " Ericka",
"description": "Test review desc",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "1"
}}
]}
</script>
<script type="text/javascript">
var arrayLength = jsonld['review'].length;
outline = document.createElement('div');
outline.className = 'outline';
document.getElementsByTagName('body')[0].appendChild(outline);
for (i = 0; i < arrayLength; i++) {
inside = document.createElement('div');
inside.className = 'inside';
document.getElementsByClassName('outline')[0].appendChild(inside);
//desc
desc = document.createElement('div');
desc.className = 'desc';
desc.innerHTML = JSON.stringify(jsonld.review[i].description);
document.getElementsByClassName('inside')[i].appendChild(desc);
//auth
auth = document.createElement('p');
auth.className = 'author';
auth.innerHTML = jsonld.review[i].author + " rated this tour " + jsonld.review[i].reviewRating.ratingValue + " out of 5";
document.getElementsByClassName('inside')[i].appendChild(auth);
//score
score = document.createElement('p');
score.className = 'score';
score.innerHTML = jsonld.review[i].reviewRating.ratingValue + " out of 5";
document.getElementsByClassName('inside')[i].appendChild(score);
}
</script>
var jsonld={
“@context”:”http://schema.org",
“@type”:“产品”,
“图像”:https://www.myurl.com/media/db3e3b23f81585_M.jpg",
“名称”:“测试名称”,
“说明”:“测试评审说明”,
“提议”:{
“@type”:“AggregateOffer”,
“可用性”:http://schema.org/InStock",
“高价”:“5195.00”,
“低价”:“2595.00”,
“报价金额”:“1”,
“价格货币”:“南非兰特”,
“priceValidUntil”:“2020-09-30”,
“url”:”https://www.myurl.com/"
}
,
“聚合”:{
“@type”:“聚合”,
“额定值”:“5”,
“最佳评级”:“5”,
“reviewCount”:“2”
},
“审查”:[
{
“@type”:“Review”,
“作者”:“米根”,
“说明”:“测试评审说明”,
“复习”:{
“@type”:“评级”,
“最佳评级”:“5”,
“额定值”:“5”,
“工作”:“1”
}},
{
“@type”:“Review”,
“作者”:“埃里卡”,
“说明”:“测试评审说明”,
“复习”:{
“@type”:“评级”,
“最佳评级”:“5”,
“额定值”:“5”,
“工作”:“1”
}}
]}
var arrayLength=jsonld['review'].长度;
大纲=document.createElement('div');
outline.className='outline';
document.getElementsByTagName('body')[0].appendChild(大纲);
对于(i=0;i
这就是我最后所做的,现在效果很好。还有一个问题是“rev”没有引用正确的容器,duh..更改为getElementsByClassName并修复
document.getElementsByClassName('rev')[0].appendChild(outline);
完整代码
<script id="jsonData" type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"image": "https://www.myurl.com/media/k2/items/cache/3899dfe821813b23f81585_M.jpg",
"name": "prod name",
"description": "prod desc",
"offers": {
"@type": "AggregateOffer",
"availability": "http://schema.org/InStock",
"highPrice": "5195.00",
"lowPrice": "2595.00",
"offerCount": "1",
"priceCurrency": "ZAR",
"priceValidUntil": "2020-09-30",
"url": "https://www.myurl.com/url"
}
,
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "5",
"bestRating": "5",
"reviewCount": "2"
},
"review": [
{
"@type": "Review",
"author": " Mea",
"description": "Test desc",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "1"
}},
{
"@type": "Review",
"author": " Eric",
"description": "Test desc",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "1"
}}
]
}
</script>
<div class="rev">
</div>
<script type="text/javascript">
var jsonld = JSON.parse(document.querySelector("#jsonData").innerText);
var arrayLength = JSON.parse(jsonld['aggregateRating'].reviewCount);
outline = document.createElement('div');
outline.className = 'outline';
document.getElementsByClassName('rev')[0].appendChild(outline);
for (i = 0; i < arrayLength; i++) {
inside = document.createElement('div');
inside.className = 'inside';
document.getElementsByClassName('outline')[0].appendChild(inside);
//desc
desc = document.createElement('div');
desc.className = 'desc';
desc.innerHTML = JSON.stringify(jsonld.review[i].description);
document.getElementsByClassName('inside')[i].appendChild(desc);
//auth
auth = document.createElement('p');
auth.className = 'author';
auth.innerHTML = jsonld.review[i].author + " rated this tour " + jsonld.review[i].reviewRating.ratingValue + " out of 5";
document.getElementsByClassName('inside')[i].appendChild(auth);
//score
score = document.createElement('p');
score.className = 'score';
score.innerHTML = jsonld.review[i].reviewRating.ratingValue + " out of 5";
document.getElementsByClassName('inside')[i].appendChild(score);
}
</script>
{
“@context”:”http://schema.org",
“@type”:“产品”,
“图像”:https://www.myurl.com/media/k2/items/cache/3899dfe821813b23f81585_M.jpg",
“名称”:“产品名称”,
“说明”:“产品说明”,
“提议”:{
“@type”:“AggregateOffer”,
“可用性”:http://schema.org/InStock",
“高价”:“5195.00”,
“低价”:“2595.00”,
“报价金额”:“1”,
“价格货币”:“南非兰特”,
“priceValidUntil”:“2020-09-30”,
“url”:”https://www.myurl.com/url"
}
,
“聚合
<script id="jsonData" type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Product",
"image": "https://www.myurl.com/media/k2/items/cache/3899dfe821813b23f81585_M.jpg",
"name": "prod name",
"description": "prod desc",
"offers": {
"@type": "AggregateOffer",
"availability": "http://schema.org/InStock",
"highPrice": "5195.00",
"lowPrice": "2595.00",
"offerCount": "1",
"priceCurrency": "ZAR",
"priceValidUntil": "2020-09-30",
"url": "https://www.myurl.com/url"
}
,
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "5",
"bestRating": "5",
"reviewCount": "2"
},
"review": [
{
"@type": "Review",
"author": " Mea",
"description": "Test desc",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "1"
}},
{
"@type": "Review",
"author": " Eric",
"description": "Test desc",
"reviewRating": {
"@type": "Rating",
"bestRating": "5",
"ratingValue": "5",
"worstRating": "1"
}}
]
}
</script>
<div class="rev">
</div>
<script type="text/javascript">
var jsonld = JSON.parse(document.querySelector("#jsonData").innerText);
var arrayLength = JSON.parse(jsonld['aggregateRating'].reviewCount);
outline = document.createElement('div');
outline.className = 'outline';
document.getElementsByClassName('rev')[0].appendChild(outline);
for (i = 0; i < arrayLength; i++) {
inside = document.createElement('div');
inside.className = 'inside';
document.getElementsByClassName('outline')[0].appendChild(inside);
//desc
desc = document.createElement('div');
desc.className = 'desc';
desc.innerHTML = JSON.stringify(jsonld.review[i].description);
document.getElementsByClassName('inside')[i].appendChild(desc);
//auth
auth = document.createElement('p');
auth.className = 'author';
auth.innerHTML = jsonld.review[i].author + " rated this tour " + jsonld.review[i].reviewRating.ratingValue + " out of 5";
document.getElementsByClassName('inside')[i].appendChild(auth);
//score
score = document.createElement('p');
score.className = 'score';
score.innerHTML = jsonld.review[i].reviewRating.ratingValue + " out of 5";
document.getElementsByClassName('inside')[i].appendChild(score);
}
</script>