Есть ли более простой способ извлечь / проанализировать значения вложенных объектов, которые не являются фиксированными?

#arrays #json #zapier

#массивы #json #zapier

Вопрос:

Я пытаюсь проанализировать конкретный вложенный объект (Sign_UP_Appointment) из результатов веб-поиска, используя код Zapier

Результаты Webhook

 {
"entity":{
    "OPPORTUNITY_ID":24096201,
    "OPPORTUNITY_NAME":"Scott Williams ",
    "OPPORTUNITY_STATE":"OPEN",
    "RESPONSIBLE_USER_ID":1737942,
    "OWNER_USER_ID":1737942,
    "DATE_CREATED_UTC":"2019-04-15T17:02:11.567",
    "DATE_UPDATED_UTC":"2019-04-15T17:02:40.437",
    "VISIBLE_TO":"OWNER",
    "CUSTOMFIELDS":[
        {
            "CUSTOM_FIELD_ID":"Administration_Type__c",
            "FIELD_VALUE":"Summary Administration"
        },
        {
            "CUSTOM_FIELD_ID":"Initial_Appointment__c",
            "FIELD_VALUE":"2019-04-11T20:45:00"
        },
        {
            "CUSTOM_FIELD_ID":"Sign_Up_Appointment__c",
            "FIELD_VALUE":"2019-04-18T21:00:00"
        }
    ],
    "TAGS":[],
    "LINKS":[
        {
            "LINK_ID":205236388,
            "CONTACT_ID":287320999,
            "OPPORTUNITY_ID":24096201
        }
    ]
}
}
  

Я хочу вернуть только пользовательское поле (Sign_Up_Appointment__c). Я попробовал приведенный ниже код, но проблема в том, что при последующих результатах порядок меняется. Есть ли способ отфильтровать только объект Sign_Up_Appointment__c?

 const result = JSON.parse(inputData.body);
return {result: result, SignUpDate: result.entity.CUSTOMFIELDS[3]};
  

Ответ №1:

Дэвид здесь, из команды платформы Zapier.

Да! Вы можете использовать Array.find:

 const result = JSON.parse(inputData.body);
return {
  result,
  SignUpDate: result.entity.CUSTOMFIELDS.find(
    f => f.CUSTOM_FIELD_ID === "Sign_Up_Appointment__c"
  )
};
  

SignUpDate будет undefined , если в массиве нет поля с этим field_id (я не уверен, насколько это вероятно)