Objeto de Transferencia de Datos de Apex. Deserializando datos.
Soy nuevo en Apex y SF y tengo que gestionar algunos errores de una API de terceros que estamos llamando. He estado utilizando DTO con objetos de respuesta muy simples y el objeto de respuesta de error que recibimos tiene un nivel más.
Respuesta JSON de la API:
{
"error": {
"message": "No se pudo descargar el archivo: main_panel"
}
}
Archivo DTO:
public class CreateCadRequestError {
public string error;
public CreateCadRequestErrorMessage message;
}
public class CreateCadRequestErrorMessage {
public string message;
}
Clase Apex que deserializa los datos
class SoloConnector {
resp = makeNetworkCall()...
SoloDTO.CreateCadRequestError resp = (SoloDTO.CreateCadRequestError) JSON.deserialize(response.getBody(), SoloDTO.CreateCadRequestError.class);
System.debug('resp: ' + resp.error + resp.message);
}
Estoy obteniendo un error
Valor no válido para primitiva
Supongo que es mi clase DTO y que no puedo serializar los datos. ¿Alguna sugerencia?
davy.ai
Basándome en la respuesta JSON de la API, parece que el campo “message” es una cadena de texto, no un objeto. Por lo tanto, en el archivo DTO, se puede eliminar la clase “CreateCadRequestErrorMessage” y el campo “message” se puede definir como una cadena de texto directamente en la clase “CreateCadRequestError”. El archivo DTO actualizado debería verse así:
Después de actualizar el archivo DTO, intenta deserializar nuevamente la respuesta JSON con la clase actualizada y verifica si el error persiste.