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.

ASP.Net Core Api: cómo deserializar un objeto JSON doblemente serializado.

Estoy utilizando una API central en ASP.Net Core para autenticar usuarios y para crear tokens JSON Web. La API central, a su vez, llama a otras API para obtener otros datos, como datos de perfil de usuario e información de suscripción. Sin embargo, la API central recibe objetos JSON doblemente serializados que no puedo deserializar. Aquí está el código de la API central:

Request.Host = new HostString(_usersApi);

HttpRequestMessageFeature hreqmf = new HttpRequestMessageFeature(HttpContext);
HttpRequestMessage httpRequestMessage = hreqmf.HttpRequestMessage;

var client = new HttpClient();
var response = await client.SendAsync(httpRequestMessage, 
HttpCompletionOption.ResponseHeadersRead);
var data = response.Content.ReadAsStringAsync();

var deserialized = JsonConvert.DeserializeObject<myobject>(data.Result);

return Ok(deserialized);

data.Result es igual a "{\"property1\":\"value1\",\"property2\":\"value2\"}"

No puedo deserializarlo a json
{"Property1": "value1", "Property2": "value2"}

¿Qué me falta? Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema aquí es que el objeto JSON está doblemente serializado. Esto significa que ya es una representación de cadena de un objeto JSON serializado. Por lo tanto, tienes que deserializarlo dos veces.

    Para hacer esto, puedes cambiar la línea:

    var deserialized = JsonConvert.DeserializeObject<myobject>(data.Result);

    a

    var tempDeserialized = JsonConvert.DeserializeObject<string>(data.Result);
    var deserialized = JsonConvert.DeserializeObject<myobject>(tempDeserialized);
    

    La primera línea deserializa el objeto JSON en una cadena, y la segunda línea deserializa esta cadena en el MyObject deseado.

    Esto debería solucionar el problema y permitirte deserializar correctamente el objeto JSON.

Comments are closed.