es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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í:

    public class CreateCadRequestError {
        public string error;
        public string message;
    }
    

    Después de actualizar el archivo DTO, intenta deserializar nuevamente la respuesta JSON con la clase actualizada y verifica si el error persiste.

Comments are closed.