记录一下那天晚上的排查过程。页面里的 Organization 和 WebSite 用了同一个 @id,工具里两个实体显示成一个,字段互相覆盖。
把日志和配置对完,能解释这个现象的基本就这几处。复制模板时忘了改 @id。少数情况下是@id 用了固定字符串,没有跟页面绑定。
少数情况下是多个实体共享同一个 URL 作为标识。
第一件事是列出页面里所有 @id
curl -s https://www.example.com/ | grep -o '"@id": "[^"]*"'
给每个实体分配唯一标识
"@id": "https://www.example.com/#organization"
等前面都确认过,再确认实体之间用 @id 引用而不是重复定义
curl -s https://www.example.com/ | python -m json.tool
我习惯把每一步的执行时间和结果记在一边,后面复盘省事。
别只看报错消失,验证要多做一步。各实体独立存在,字段不再互相覆盖,工具里能正确显示多个对象。
提醒一点。@id 是实体的唯一标识,重复会让解析器认为是同一个对象,字段合并后往往剩下最后一条,问题很难从页面上看出来,只能比对源码。这类问题最好一次改到位,反复小改反而容易把原因搅混。