【问题标题】:How to get Nested JSON data in effiecient way?如何以有效的方式获取嵌套的 JSON 数据?
【发布时间】: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


【解决方案1】:

以下是如何从这个 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;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多