如何有效地获取嵌套的JSON数据



我从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]     

我试图使用以下代码片段来获取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数据中获取SurnameGivennameGender

var Name = {
"context" : {
"priority" : "REALTIME",
"properties" : [ ]
},
"inputPerson" : {
"type" : "NaturalInputPerson",
"personName" : {
"nameFields" : [ {
"string" : "Sample Name",
"fieldType" : "FULLNAME"
}]
},
"gender" : "UNKNOWN"
}

var options = {
'method' : 'post',
'contentType': 'application/json',
'payload' : JSON.stringify(Name),

};

var response = UrlFetchApp.fetch(url,options).getContentText();
var data = JSON.parse(response);
var gender =  data.bestMatch.parsedPerson.gender.gender;
var Given =   data.bestMatch.parsedPerson.addressingGivenName; 
var Surname = data.bestMatch.parsedPerson.addressingSurname;

试试看,让我知道它是否对你有效。

最新更新