¿Cómo haría para verificar si un objeto devuelto por una API contiene X?
Esto es lo más cerca que he llegado, sin obtener ningún error:
$.ajax(settings).done(function (response) { var email_response = {response}; if (Object.values((JSON.stringify(email_response))).indexOf('"response"') > -1) { console.log('Is valid'); else (console.log('Not valid')); }); Después de ejecutarlo, da como resultado la respuesta "No válido" de la función if else , aunque el texto "válido" está presente en el retorno donde "Es válido" sería el resultado esperado.
Stringificado usando console.log(JSON.stringify(email_response)); esto es lo que devuelve la API:
{"response":{"address":"test@domain.com","status":"valid","sub_status":"role_based_catch_all","free_email":false,"did_you_mean":null,"account":"test","domain":"domain.com","domain_age_days":"10116","smtp_provider":"","mx_found":"true","mx_record":"mx.domain.com","firstname":null,"lastname":null,"gender":null,"country":null,"region":null,"city":null,"zipcode":null,"processed_at":"2022-03-12 12:41:38.306"}}He intentado no encadenarlo también, pero esto tiene el mismo resultado que se explicó anteriormente.
Lo siguiente tampoco ve el texto especificado como presente:
Object.keys(email_response).forEach(function(key) { if ((email_response)[key] == 'valid') { console.log('Is valid');} else (console.log('Not valid')); });no tienes que hacer cadenas si quieres obtener algunos datos
$.ajax(settings).done(function (response) { var status= response.status; // valid //or console.log("status",response.status); // valid or undefined });pero si por alguna razón desea crear un nuevo objeto, use este código
var email_response = {"response":response}; var status= email_response.response.status; // validvalid no es una clave, es un valor. Debe verificar el status de la clave de esta manera.
$.ajax(settings).done(function (response) { if (response.hasOwnProperty('status') && response.status === 'valid') { console.log('Is valid'); } else { console.log('Not valid'); } });