Safari在解析JSON-LD时出错。

9
创建一个包含这段简单代码的HTML文件,并在Safari中打开它。
<html>
  <head>
    <script type="application/ld+json">
      [
        {
          "@context": "http://schema.org",
          "@type": "Organization",
          "name": "Parqet",
          "url": "https://www.parqet.com/",
          "logo": "https://www.parqet.com/logos/parqet_logo_pos.svg",
          "sameAs": [
            "https://www.facebook.com/parqetcom",
            "https://twitter.com/ParqetApp",
            "https://www.instagram.com/ParqetApp/",
            "https://www.youtube.com/channel/UC4LOcElG8Z73Hvgbbp3m1KQ",
            "https://www.linkedin.com/company/parqet/",
            "https://github.com/tresorone"
          ]
        }
      ]
    </script>
  </head>
  <body>
    test
  </body>
</html>

Safari会产生此错误。

类型错误:未定义的对象(评估'r [“@context”]。toLowerCase')

enter image description here

任何关于我们如何解决这个问题的见解都将不胜感激。在最后一个属性或对象后面添加一个逗号可以消除错误,但这不再是有效的JSON。行为非常奇怪。
1个回答

5

看起来Safari对数组有问题,希望得到一个对象。为了仍然编写多个JSON-LD定义,我们可以使用@graph符号。

这样修复了错误。

<html>
  <head>
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@graph": [
          {
            "@type": "Organization",
            "name": "Parqet",
            "url": "https://www.parqet.com/",
            "logo": "https://www.parqet.com/logos/parqet_logo_pos.svg"
          }
        ]
      }
    </script>
  </head>
  <body>
    test
  </body>
</html>

清楚地说,对象数组是完全有效的。 我怀疑这是Safari的一个错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接