Y tengo mi definición de objeto como:

public class sendSmsResult
{
    public sendSmsResult()
    {
        MessageIdList=new List<MessageId>();
    }
    
    public string ErrorCode { get; set; }
    public string PacketId { get; set; }
    public List<MessageId> MessageIdList { get; set; }

}

public class MessageId
{
    public MessageId()
    {
        messageid=new List<string>();
    }
    public List<string> messageid { get; set; }
}

Después de ejecutar esto:

IRestResponse response = client.Execute(request);

Obtengo el resultado json de "response.Content" como

 "{\"sendSmsResult\":{\"ErrorCode\":\"0\",\"PacketId\":\"261633886\",\"MessageIdList\":{\"MessageId\":[\"7096779206\",\"-19\"]}}}"

Después de obtener la cadena json, estoy ejecutando esto:

 JsonConvert.DeserializeObject<sendSmsResult>(response.Content);

Da un error dice:

{"Message": "Se ha producido un error", "ExceptionMessage": "Error al convertir el valor" {"sendSmsResult": {"ErrorCode": "0", "PacketId": "261638899", "MessageIdList": {" MessageId ": [" 7097068828 "," - 19 "]}}}" para escribir 'UME.WebApi.Models.sendSmsResult'. Ruta '', línea 1, posición

-1
ilhank 2 dic. 2020 a las 14:40

2 respuestas

La mejor respuesta

Necesita envoltorio para sendSmsResult, como abajo:

class sendSmsResultWrapper {
public sendSmsResult sendSmsResult {get;set;}
}

¡¡Y el tipo de sendSmsResult.MessageIdList es MessageId, no List<MessageId> !!

3
Henry Trần 2 dic. 2020 a las 11:49

Por lo que vale, json2csharp.com (sin afiliación) sugiere la siguiente estructura de clases para sus datos de muestra:

// Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse); 
    public class MessageIdList    {
        public List<string> MessageId { get; set; } 
    }

    public class SendSmsResult    {
        public string ErrorCode { get; set; } 
        public string PacketId { get; set; } 
        public MessageIdList MessageIdList { get; set; } 
    }

    public class Root    {
        public SendSmsResult sendSmsResult { get; set; } 
    }
0
500 - Internal Server Error 2 dic. 2020 a las 11:58