JSON-LD中多@types写法及LocalBusiness与Products合并方法问询
如何在单个JSON-LD代码块中合并LocalBusiness和Product对象
嘿,这个问题我之前也纠结过——Microdata里直接嵌套或者并列就行,但JSON-LD的写法确实容易让人摸不着头脑。其实关键就是用JSON-LD的@graph属性,它专门用来在一个代码块里承载多个独立的结构化数据实体,完美解决你的需求!
核心思路
@graph是JSON-LD的核心特性之一,它允许你在同一个script标签里定义多个不同类型的结构化数据对象。每个对象可以单独设置自己的@type(比如LocalBusiness或Product),还能通过@id属性建立对象之间的关联(比如标记产品的卖家是你的本地商家)。
完整示例代码
下面是针对本地商家+在售产品的JSON-LD示例,我加了注释方便你理解:
<script type="application/ld+json"> { "@context": "https://schema.org", "@graph": [ { // 第一个对象:你的本地商家信息 "@type": "LocalBusiness", "@id": "#local-business", // 给商家设置唯一标识,方便产品关联 "name": "街角烘焙坊", "address": { "@type": "PostalAddress", "streetAddress": "XX街道123号", "addressLocality": "上海市", "postalCode": "200000" }, "telephone": "021-12345678", "openingHours": "Mo-Sa 08:00-20:00", "image": "/images/bakery-storefront.jpg" }, { // 第二个对象:商家在售的一款产品 "@type": "Product", "name": "经典黄油牛角包", "description": "采用进口黄油烘焙,外酥内软", "image": "/images/croissant.jpg", "offers": { "@type": "Offer", "price": "12.00", "priceCurrency": "CNY", "availability": "https://schema.org/InStock" }, "seller": "#local-business" // 通过@id关联到上面的本地商家 }, { // 还可以继续添加更多产品,或者其他类型的实体 "@type": "Product", "name": "提拉米苏蛋糕", "description": "意式经典甜点,马斯卡彭芝士制作", "image": "/images/tiramisu.jpg", "offers": { "@type": "Offer", "price": "38.00", "priceCurrency": "CNY", "availability": "https://schema.org/InStock" }, "seller": "#local-business" } ] } </script>
关键细节说明
@context只需要在最外层定义一次,所有@graph里的对象都会继承这个上下文。@id是可选但非常推荐的:它不仅能帮搜索引擎明确产品和商家的归属关系,如果你后续要添加其他关联实体(比如商家的Review),也能通过这个ID快速关联。- 每个对象的属性要严格遵循schema.org的规范:比如LocalBusiness的
address需要嵌套PostalAddress类型,Product的offers需要嵌套Offer类型,这样搜索引擎才能正确解析。 - 你可以在
@graph里添加任意多个实体,不止局限于商家和产品,比如还能加入Review(产品评价)、Event(商家活动)等。
这样写出来的JSON-LD既符合规范,又能把两个独立对象合并到同一个代码块里,完全满足你的需求!
内容的提问来源于stack exchange,提问作者user2588317
相关产品推荐
相关产品推荐

