带多优惠及附加项的JSON-LD在Google富结果测试中报错排查
问题排查与修正方案
1. 解析错误:Parsing error: Missing '}' or object member name
原因分析
这类错误完全由JSON语法不合法导致,常见触发场景:
- 对象/数组的
{}/[]未成对闭合 - 键名未用双引号包裹(JSON强制要求所有键必须是双引号字符串)
- 数组最后一个元素后多了多余的逗号
- 字符串未用双引号闭合,或内部特殊字符未转义(比如嵌套引号)
修正步骤
- 用浏览器控制台的
JSON.parse()或本地JSON校验工具快速定位错误位置 - 逐一检查每个
Service区块、offers对象的括号闭合情况 - 确保所有键名(如
@type、name、offers)都用双引号包裹 - 删除数组末尾多余的逗号
错误示例与修正
错误代码片段(括号未闭合):
{ "@context": "https://schema.org", "@type": "Service", "name": "ServiceOne", "offers": { "@type": "Offer", "name": "优惠A" // 缺少闭合的} }
修正后:
{ "@context": "https://schema.org", "@type": "Service", "name": "ServiceOne", "offers": { "@type": "Offer", "name": "优惠A" } // 补充闭合括号 }
2. 重复唯一属性错误:Duplicate unique property
原因分析
Google Rich Results Test会校验JSON-LD中带唯一性约束的属性(如@id),若多个对象(不同Service的offers或其附加项)使用了相同的@id,就会触发该错误;另外,offers中重复定义identifier、sku这类天然唯一的属性,也会报错。
修正步骤
- 检查所有
@id属性:确保每个Service、Offer、PriceSpecification等对象的@id是唯一值(比如用不同的URL片段或UUID) - 若不需要显式指定
@id,直接删除该属性(Google会自动生成唯一标识) - 确保
offers中的sku、identifier等属性在不同优惠间不重复
错误示例与修正
错误代码片段(重复@id):
[ { "@type": "Service", "name": "ServiceOne", "offers": { "@type": "Offer", "@id": "#offer1", "name": "优惠A" } }, { "@type": "Service", "name": "ServiceTwo", "offers": { "@type": "Offer", "@id": "#offer1", // 重复的@id "name": "优惠B" } } ]
修正后:
[ { "@type": "Service", "name": "ServiceOne", "offers": { "@type": "Offer", "@id": "#offer-service1", "name": "优惠A" } }, { "@type": "Service", "name": "ServiceTwo", "offers": { "@type": "Offer", "@id": "#offer-service2", // 唯一的@id "name": "优惠B" } } ]
或者直接删除@id属性,让系统自动处理:
[ { "@type": "Service", "name": "ServiceOne", "offers": { "@type": "Offer", "name": "优惠A" } }, { "@type": "Service", "name": "ServiceTwo", "offers": { "@type": "Offer", "name": "优惠B" } } ]
内容的提问来源于stack exchange,提问作者EagleDude
相关产品推荐
相关产品推荐

