存储来自 JSON 对象的数据,这些对象来自 Google 人 Api
Storing data from JSON object received from Google People Api
所以我有一个服务器从 Google 人 api 那里接收有关联系人的数据,我收到的对象具有以下结构:
{ connections:
[ { resourceName: 'people/c3904925882068251400',
etag: '%EgYBAgkLNy4aDQECAwQFBgcICQoLDA0iDFZUOUE0NkRBZW0wPQ==',
names:
[ { metadata: { primary: true, source: [Object] },
displayName: 'Mihai Vrincut',
familyName: 'Vrincut',
givenName: 'Mihai',
displayNameLastFirst: 'Vrincut, Mihai' },
{ metadata: { source: [Object] },
displayName: 'Mihai Vrincut',
familyName: 'Vrincut',
givenName: 'Mihai',
displayNameLastFirst: 'Vrincut, Mihai' } ],
emailAddresses:
[ { metadata: { primary: true, source: [Object] },
value: 'mihai.vrincut@gmail.com' } ] },
{ resourceName: 'people/c3275206487406036814',
etag: '%EgYBAgkLNy4aDQECAwQFBgcICQoLDA0iDHBFVzBUMm8wWU5nPQ==',
names:
[ { metadata: { primary: true, source: [Object] },
displayName: 'aaaaaaaaa',
givenName: 'aaaaaaaaa',
displayNameLastFirst: 'aaaaaaaaa' } ] },
{ resourceName: 'people/c5777943907795350059',
etag: '%EgYBAgkLNy4aDQECAwQFBgcICQoLDA0iDGxOeGYwblg3bFUwPQ==',
names:
[ { metadata: { primary: true, source: [Object] },
displayName: 'costin',
givenName: 'costin',
phoneticFamilyName: 'cancius',
phoneticGivenName: 'costin',
displayNameLastFirst: 'costin' } ],
emailAddresses: [ { metadata: { primary: true, source: [Object] }, value: 'hj' } ],
phoneNumbers:
[ { metadata: { primary: true, source: [Object] },
value: '07543532512',
canonicalForm: '+40754353251' } ] } ], totalPeople: 3}totalItems: 3 }
为了得到这个对象,我使用了 util.inspect() 方法。但是,例如,当我尝试访问名称时,我得到 undefined:
var response=util.inspect(responses,{depth:5});
Console.log(response.connections[0].names);
怎么了?
您应该将响应转换为 JSON 对象。
试试这个:
console.log(JSON.parse(response).connections[0].names);
(我假设你在 Javascript 工作)
我要做的是验证答案是否为字符串,你有一个
console.log (typeof response)
如果是字符串,则转换为JSON:
let responseObject = JSON.parse (response);
最后,尝试是否可以访问该对象:
console.log (responseObject.connections [0] .names);
你告诉我你的答案:)
所以,考虑到当时的情况,以及您在评论部分提供的信息。
我假设 responses 已经是一个对象,但是 util.inspect 使它成为一个具有 JSON 语法但在键名前后没有引号 (") 的字符串。这就是你得到的原因
{ connections: ^ SyntaxError: Unexpected token c in JSON at position 2
因此,请尝试查看响应对象。
console.log(responses)
并获取键的名称。和他们
console.log(responses.sth.sthElse.anotherSth.anotherSthElse.lastSth.connections)
看看你是否得到了预期的结果:)
所以我有一个服务器从 Google 人 api 那里接收有关联系人的数据,我收到的对象具有以下结构:
{ connections:
[ { resourceName: 'people/c3904925882068251400',
etag: '%EgYBAgkLNy4aDQECAwQFBgcICQoLDA0iDFZUOUE0NkRBZW0wPQ==',
names:
[ { metadata: { primary: true, source: [Object] },
displayName: 'Mihai Vrincut',
familyName: 'Vrincut',
givenName: 'Mihai',
displayNameLastFirst: 'Vrincut, Mihai' },
{ metadata: { source: [Object] },
displayName: 'Mihai Vrincut',
familyName: 'Vrincut',
givenName: 'Mihai',
displayNameLastFirst: 'Vrincut, Mihai' } ],
emailAddresses:
[ { metadata: { primary: true, source: [Object] },
value: 'mihai.vrincut@gmail.com' } ] },
{ resourceName: 'people/c3275206487406036814',
etag: '%EgYBAgkLNy4aDQECAwQFBgcICQoLDA0iDHBFVzBUMm8wWU5nPQ==',
names:
[ { metadata: { primary: true, source: [Object] },
displayName: 'aaaaaaaaa',
givenName: 'aaaaaaaaa',
displayNameLastFirst: 'aaaaaaaaa' } ] },
{ resourceName: 'people/c5777943907795350059',
etag: '%EgYBAgkLNy4aDQECAwQFBgcICQoLDA0iDGxOeGYwblg3bFUwPQ==',
names:
[ { metadata: { primary: true, source: [Object] },
displayName: 'costin',
givenName: 'costin',
phoneticFamilyName: 'cancius',
phoneticGivenName: 'costin',
displayNameLastFirst: 'costin' } ],
emailAddresses: [ { metadata: { primary: true, source: [Object] }, value: 'hj' } ],
phoneNumbers:
[ { metadata: { primary: true, source: [Object] },
value: '07543532512',
canonicalForm: '+40754353251' } ] } ], totalPeople: 3}totalItems: 3 }
为了得到这个对象,我使用了 util.inspect() 方法。但是,例如,当我尝试访问名称时,我得到 undefined:
var response=util.inspect(responses,{depth:5});
Console.log(response.connections[0].names);
怎么了?
您应该将响应转换为 JSON 对象。 试试这个:
console.log(JSON.parse(response).connections[0].names);
(我假设你在 Javascript 工作)
我要做的是验证答案是否为字符串,你有一个
console.log (typeof response)
如果是字符串,则转换为JSON:
let responseObject = JSON.parse (response);
最后,尝试是否可以访问该对象:
console.log (responseObject.connections [0] .names);
你告诉我你的答案:)
所以,考虑到当时的情况,以及您在评论部分提供的信息。 我假设 responses 已经是一个对象,但是 util.inspect 使它成为一个具有 JSON 语法但在键名前后没有引号 (") 的字符串。这就是你得到的原因
{ connections: ^ SyntaxError: Unexpected token c in JSON at position 2
因此,请尝试查看响应对象。
console.log(responses)
并获取键的名称。和他们
console.log(responses.sth.sthElse.anotherSth.anotherSthElse.lastSth.connections)
看看你是否得到了预期的结果:)