【问题标题】:Is there a way to access JSON-LD via JavaScript if it doesn't have an ID?如果没有 ID,有没有办法通过 JavaScript 访问 JSON-LD?
【发布时间】:2016-07-27 02:05:46
【问题描述】:

我正在尝试访问我收到的 eventbrite 电子邮件中的内容,但 html 代码没有与 JSON-LD 脚本关联的 ID。那么有没有办法仍然访问这些数据?如果有,怎么做?

是否可以在 JSON-LD 脚本标签上附加一个临时 ID,以便我可以访问数据?如果有,怎么做?

【问题讨论】:

  • 欢迎来到 Stack Overflow。 Read here 了解有关如何创建最小、完整和可验证问题的更多信息。
  • 为什么需要一个 ID 才能访问它?
  • Unor,当我搜索互联网时,所有示例都使用 ID 显示,所以不知道如何在不使用 ID 的情况下访问它。

标签: javascript json google-apps-script json-ld


【解决方案1】:

您可以使用

获取所有 JSON-LD 块
 document.querySelectorAll('script[type="application/ld+json"]');

或者只是第一个

document.querySelector('script[type="application/ld+json"]');

这是一个完整的例子:

var jsonld = JSON.parse(document.querySelector('script[type="application/ld+json"]').innerText);
document.getElementById('result').innerText = jsonld.endDate;
<html>
  <head>
    <script type="application/ld+json">
      {
        "@context": "http://schema.org",
        "@type": "Event",
        "name": "A random event",
        "startDate": "2013-09-14T21:30",
        "endDate": "2013-09-14T21:30"
      }
    </script>
  </head>
  <body>
    <p>The end date is: <strong id="result"></strong></p>
  </body>
</html>

【讨论】:

  • 马库斯,感谢您的建议!但是,当我使用 var emailDate = document.querySelectorAll('script[type="application/ld+json"]'); 时出现语法错误
  • 另外,一旦我选择了整个 json ld,我就只使用 email.Date。 endDate 访问 json ld 中的数据? (“endDate”是我要访问的参数)
  • 我已经更新了我的答案以包含一个完整的、可运行的示例
【解决方案2】:
function myFunction() {
    var todayDate = new Date();
    var label = GmailApp.getUserLabelByName("eventbrite");
    var threads = label.getThreads();


    for  (var i = 0; i < threads.length; i++) {
        threads[i].getMessages()[i].getBody().forEach(
            var jsonld = JSON.parse(document.querySelector('script[type="application/ld+json"]').innerText);
            document.getElementById('result').innerText = jsonld.endDate;

      if (jsonld.endDate > todayDate){
        threads[i].markUnread();
      } 
    )
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    相关资源
    最近更新 更多