Javascript 将jQuery中的变量插入JSON模式标记

Javascript 将jQuery中的变量插入JSON模式标记,javascript,jquery,json,schema.org,Javascript,Jquery,Json,Schema.org,我试图获取元描述并将其内容复制到一些JSON模式标记中。 但我不知道如何让它将变量正确地传递到JSON结构中 我是这么想的: <script> const desc = $('meta[name=description]').attr("content"); </script> <script type='application/ld+json'> { "@context": "http://www.sc

我试图获取元描述并将其内容复制到一些JSON模式标记中。 但我不知道如何让它将变量正确地传递到JSON结构中

我是这么想的:

<script>
      const desc = $('meta[name=description]').attr("content");
    </script>
    <script type='application/ld+json'>
      {
        "@context": "http://www.schema.org",
        "@type": "LocalBusiness",
        "name": "BizName",
        "telephone": "+1234567890",
        "description": "'+desc+'",
        ....
      }
    </script>

const desc=$('meta[name=description]').attr(“内容”);
{
“@context”:”http://www.schema.org",
“@type”:“LocalBusiness”,
“名称”:“BizName”,
“电话”:“+1234567890”,
“说明”:“'+desc+'”,
....
}
我知道它不会将
desc
变量直接传递到JSON标记中,因为它位于单独的脚本标记中。我只是不知道如何将两者结合起来,使其正确工作。希望这是有意义的,并且可以接受任何建议。

你不能–它是静态JSON标记,而不是动态JavaScript


从技术上讲,您可以使用所有模式JSON动态地注入一个全新的
标记,但JavaScript可能*不会通过软件解析页面中的JSON+LD数据来解释。

首先构建模式,然后将其注入


const desc=$('meta[name=description]').attr(“content”).toString();
变量模式={
“@context”:”http://www.schema.org",
“@type”:“LocalBusiness”,
“名称”:“BizName”,
“电话”:“+1234567890”,
“描述”:描述,
....
}      
var script=document.createElement('script');
script.type=“应用程序/ld+json”;
script.text=JSON.stringify(模式);
document.querySelector('body').appendChild(脚本);

它将进行解析。我就是这样做的。一些消费者可能会解析它,但不一定是所有消费者。谷歌是这方面唯一重要的消费者,谷歌接受了。假设页面(和元描述)是由后端生成的,如果OP只需要读取元描述来生成LD+JSON,最好还是在后台完成。你做了很多假设。你使用过结构化数据吗?或者这都是理论上的吗?看起来我可以用它来构建模式,但它看起来不是注入元内容,而是在描述中生成
'+desc+'
。不确定我是否错过了什么?啊,好的。无需连接
desc
,因为
var模式
是一个javascript对象。我编辑了答案以反映这一点。啊,好的。是的,我有点想,但我想以防万一。谢谢似乎正在工作。您能提供一个不依赖jQuery的版本吗?希望使用您的解决方案,但需要一个不需要CDN调用的“独立”版本。@JayGray-我认为如果您使用
document.querySelector(“meta[name='description']”)。getAttribute(“content”)。toString这可能有用。不过我还没有测试过。