javascript - 为什么我的点符号访问 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
我哪里错了?
太感谢了
解决方案
您应该有错误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"])