【发布时间】:2022-10-23 22:43:56
【问题描述】:
我有来自 API 的以下 JSON 数据,我只想从中获取数组中的特定值:
这是示例对象数据:
{
"matches":[
{
"parsedPerson":{
"personType":"NATURAL",
"personRole":"PRIMARY",
"mailingPersonRoles":[
"ADDRESSEE"
],
"gender":{
"gender":"MALE",
"confidence":0.9325842696629214
},
"addressingGivenName":"Brandyn",
"addressingSurname":"Kramer",
"outputPersonName":{
"terms":[
{
"string":"Brandyn",
"termType":"GIVENNAME"
},
{
"string":"Kramer",
"termType":"SURNAME"
}
]
}
},
"parserDisputes":[
],
"likeliness":0.9427026792672768,
"confidence":0.9433333333333334
}
],
"bestMatch":{
"parsedPerson":{
"personType":"NATURAL",
"personRole":"PRIMARY",
"mailingPersonRoles":[
"ADDRESSEE"
],
"gender":{
"gender":"MALE",
"confidence":0.9325842696629214
},
"addressingGivenName":"Brandyn",
"addressingSurname":"Kramer",
"outputPersonName":{
"terms":[
{
"string":"Brandyn",
"termType":"GIVENNAME"
},
{
"string":"Kramer",
"termType":"SURNAME"
}
]
}
},
"parserDisputes":[
],
"likeliness":0.9427026792672768,
"confidence":0.9433333333333334
}
}
例如,我想在哪里获得“字符串”值
'termType=GIVENNAME' (Tom,Henry)
'termType=SURNAME' (Smith)
and 'gender' (MALE)
作为初学者,如果我想获得“性别”,我将执行以下操作:
var gender = data.bestMatch.parsedPerson.gender.gender
但我认为这不是解决此问题的正确方法,我想使用循环获取数组中的所有数据,类似这样,或者可能是更好的方法:
var Given = [Tom,Henry]
var Surname = [Smith]
var gender = [MALE]
我正在尝试使用以下代码 sn-p 来获取 termType = GIVENNAME 的值,但它给出了不明确的作为输出:
const findName = (obj, key) => {
const arr = obj['outputPersonName'];
if(arr.length){
const result = arr.filter(el => {
return el['termType'] === key;
});
if(result && result.length){
return result.string;
}
else{
return '';
}
}
}
console.log(findName(data.parsedPerson, 'GIVENNAME'));
任何指导将不胜感激。
【问题讨论】:
-
您为 JSON 提供的不是 JSON
-
这是一个 JSON 工具:jsonformatter.curiousconcept.com
-
感谢您的帮助,我修剪了输出以使其简单,但现在我已经更新了来自脚本运行的整个输出。
-
它仍然不是 JSON
-
EagleEye 一开始就会发现这一点。
标签: javascript json google-apps-script