首页 > 解决方案 > 为什么我的点符号访问 5 层 json 对象返回 null?

问题描述

这可能是一个简单的答案 - 但请原谅我,因为我是个菜鸟。

我正在尝试使用点表示法访问来自 Google 自定义搜索引擎的结果中的嵌套 json 对象(在 Google Apps 脚本中)

我的 JSON 文件有一个可变结果

var result = JSON.parse(response.getContentText()); 

这是 JSON 文件的相关部分:

"items": [
    {
      "kind": "customsearch#result",
      "title": "Nicole Hartvig - Vice President Product Marketing - Zynga | LinkedIn",
      "htmlTitle": "Nicole Hartvig - Vice President Product \u003cb\u003eMarketing\u003c/b\u003e - \u003cb\u003eZynga\u003c/b\u003e | LinkedIn",
      "link": "https://www.linkedin.com/in/nicole-hartvig-77607ab",
      "displayLink": "www.linkedin.com",
      "snippet": "Nicole Hartvig. VP Product Marketing. ZyngaBar-Ilan University. San Francisco \nBay Area500+ connections.",
      "htmlSnippet": "Nicole Hartvig. VP Product \u003cb\u003eMarketing\u003c/b\u003e. \u003cb\u003eZynga\u003c/b\u003eBar-Ilan University. San Francisco \u003cbr\u003e\nBay Area500+ connections.",
      "formattedUrl": "https://www.linkedin.com/in/nicole-hartvig-77607ab",
      "htmlFormattedUrl": "https://www.linkedin.com/in/nicole-hartvig-77607ab",
      "pagemap": {
        "metatags": [
          {
            "og:image": "https://static-exp1.licdn.com/sc/p/com.linkedin.public-profile-frontend%3Apublic-profile-frontend-static-content%2B1.0.796/f/%2Fpublic-profile-frontend%2Fartdeco-icons%2Fstatic%2Fimages%2Fghost-images%2Fperson.svg",
            "og:type": "profile",
            "twitter:card": "summary",
            "twitter:title": "Nicole Hartvig - Vice President Product Marketing - Zynga | LinkedIn",
            "al:ios:app_name": "LinkedIn",
            "platform-worker": "https://static-exp1.licdn.com/sc/h/f1rrg2iyfxtin8sa39nl5yphl",
            "og:title": "Nicole Hartvig - Vice President Product Marketing - Zynga | LinkedIn",
            "al:android:package": "com.linkedin.android",
            "pagekey": "public_profile_v3_mobile",
            "locale": "en_US",
            "al:ios:url": "https://www.linkedin.com/in/nicole-hartvig-77607ab",
            "og:description": "View Nicole Hartvig’s profile on LinkedIn, the world's largest professional community. Nicole has 4 jobs listed on their profile. See the complete profile on LinkedIn and discover Nicole’s connections and jobs at similar companies.",
            "al:ios:app_store_id": "288429040",
            "platform": "https://static-exp1.licdn.com/sc/h/9jz7j4nt804mq3yk6akvsioxt,3wo0d340gqtz9xlexnrcz1as9",
            "twitter:image": "https://static-exp1.licdn.com/sc/p/com.linkedin.public-profile-frontend%3Apublic-profile-frontend-static-content%2B1.0.796/f/%2Fpublic-profile-frontend%2Fartdeco-icons%2Fstatic%2Fimages%2Fghost-images%2Fperson.svg",
            "al:android:url": "https://www.linkedin.com/in/nicole-hartvig-77607ab",
            "profile:last_name": "Hartvig",
            "twitter:site": "@Linkedin",
            "viewport": "width=device-width, initial-scale=1.0",
            "litmsprofilename": "public-profile-frontend",
            "twitter:description": "View Nicole Hartvig’s profile on LinkedIn, the world's largest professional community. Nicole has 4 jobs listed on their profile. See the complete profile on LinkedIn and discover Nicole’s connections and jobs at similar companies.",
            "profile:first_name": "Nicole",
            "og:url": "https://www.linkedin.com/in/nicole-hartvig-77607ab",
            "al:android:app_name": "LinkedIn"
          }
        ],
        "cse_image": [
          {
            "src": "https://static-exp1.licdn.com/sc/p/com.linkedin.public-profile-frontend%3Apublic-profile-frontend-static-content%2B1.0.796/f/%2Fpublic-profile-frontend%2Fartdeco-icons%2Fstatic%2Fimages%2Fghost-images%2Fperson.svg"
          }
        ]
      }
    }, 

我正在尝试访问某些值并将它们放入变量中。较短的点符号可以工作,但是当我尝试访问嵌套更深的数据时,我返回 null:

var linkedinURL = result.items[0].link; 
Logger.log(linkedinURL); // returns linkedin URL perfectly

var fName = result.items[0].pagemap.metatags.profile:first_name;
Logger.log(fName); // returns null 

我哪里错了?

太感谢了

标签: javascriptjsongoogle-apps-scriptgoogle-custom-search

解决方案


您应该有错误Uncaught SyntaxError: Unexpected token ':',因为 : 将无效。您需要使用括号表示法。

result.items[0].pagemap.metatags[0]['profile:first_name'];

const response = {
  "items": [{
    "kind": "customsearch#result",
    "title": "Nicole Hartvig - Vice President Product Marketing - Zynga | LinkedIn",
    "htmlTitle": "Nicole Hartvig - Vice President Product \u003cb\u003eMarketing\u003c/b\u003e - \u003cb\u003eZynga\u003c/b\u003e | LinkedIn",
    "link": "https://www.linkedin.com/in/nicole-hartvig-77607ab",
    "displayLink": "www.linkedin.com",
    "snippet": "Nicole Hartvig. VP Product Marketing. ZyngaBar-Ilan University. San Francisco \nBay Area500+ connections.",
    "htmlSnippet": "Nicole Hartvig. VP Product \u003cb\u003eMarketing\u003c/b\u003e. \u003cb\u003eZynga\u003c/b\u003eBar-Ilan University. San Francisco \u003cbr\u003e\nBay Area500+ connections.",
    "formattedUrl": "https://www.linkedin.com/in/nicole-hartvig-77607ab",
    "htmlFormattedUrl": "https://www.linkedin.com/in/nicole-hartvig-77607ab",
    "pagemap": {
      "metatags": [{
        "og:image": "https://static-exp1.licdn.com/sc/p/com.linkedin.public-profile-frontend%3Apublic-profile-frontend-static-content%2B1.0.796/f/%2Fpublic-profile-frontend%2Fartdeco-icons%2Fstatic%2Fimages%2Fghost-images%2Fperson.svg",
        "og:type": "profile",
        "twitter:card": "summary",
        "twitter:title": "Nicole Hartvig - Vice President Product Marketing - Zynga | LinkedIn",
        "al:ios:app_name": "LinkedIn",
        "platform-worker": "https://static-exp1.licdn.com/sc/h/f1rrg2iyfxtin8sa39nl5yphl",
        "og:title": "Nicole Hartvig - Vice President Product Marketing - Zynga | LinkedIn",
        "al:android:package": "com.linkedin.android",
        "pagekey": "public_profile_v3_mobile",
        "locale": "en_US",
        "al:ios:url": "https://www.linkedin.com/in/nicole-hartvig-77607ab",
        "og:description": "View Nicole Hartvig’s profile on LinkedIn, the world's largest professional community. Nicole has 4 jobs listed on their profile. See the complete profile on LinkedIn and discover Nicole’s connections and jobs at similar companies.",
        "al:ios:app_store_id": "288429040",
        "platform": "https://static-exp1.licdn.com/sc/h/9jz7j4nt804mq3yk6akvsioxt,3wo0d340gqtz9xlexnrcz1as9",
        "twitter:image": "https://static-exp1.licdn.com/sc/p/com.linkedin.public-profile-frontend%3Apublic-profile-frontend-static-content%2B1.0.796/f/%2Fpublic-profile-frontend%2Fartdeco-icons%2Fstatic%2Fimages%2Fghost-images%2Fperson.svg",
        "al:android:url": "https://www.linkedin.com/in/nicole-hartvig-77607ab",
        "profile:last_name": "Hartvig",
        "twitter:site": "@Linkedin",
        "viewport": "width=device-width, initial-scale=1.0",
        "litmsprofilename": "public-profile-frontend",
        "twitter:description": "View Nicole Hartvig’s profile on LinkedIn, the world's largest professional community. Nicole has 4 jobs listed on their profile. See the complete profile on LinkedIn and discover Nicole’s connections and jobs at similar companies.",
        "profile:first_name": "Nicole",
        "og:url": "https://www.linkedin.com/in/nicole-hartvig-77607ab",
        "al:android:app_name": "LinkedIn"
      }],
      "cse_image": [{
        "src": "https://static-exp1.licdn.com/sc/p/com.linkedin.public-profile-frontend%3Apublic-profile-frontend-static-content%2B1.0.796/f/%2Fpublic-profile-frontend%2Fartdeco-icons%2Fstatic%2Fimages%2Fghost-images%2Fperson.svg"
      }]
    }
  }]
}

console.log(response.items[0].pagemap.metatags[0]["profile:first_name"])


推荐阅读