web-dev-qa-db-fra.com

Impossible de convertir l'objet de type 'Newtonsoft.Json.Linq.JObject' en <MaClasse>

Ce code:

var commandMessage = new CommandMessage { CorrelationId = Guid.NewGuid() };
var json = JsonConvert.SerializeObject(commandMessage);
var myCommandMessage = (CommandMessage)JsonConvert.DeserializeObject(json);

donne ce message d'erreur:

Additional information: Unable to cast object of type 'Newtonsoft.Json.Linq.JObject' to type 'QueueConnectionStringTester.CommandMessage'

C'est la classe CommandMessage:

public class CommandMessage
{
    public Guid CorrelationId { get; set; }        
}

Qu'est-ce que j'oublie ici? 

7
Tony

Vous devez spécifier le type lors de la désérialisation.

Non plus:

var myCommandMessage = JsonConvert.DeserializeObject<CommandMessage>(json);

Ou:

var myCommandMessage = (CommandMessage)JsonConvert.DeserializeObject(json, typeof(CommandMessage));
14
Brian Rogers

Vous devez donner le type. La classe JsonConvert ne sait rien de votre classe CommandMessage

    public class CommandMessage
    {
        public Guid CorrelationId { get; set; }
    }

    static void Main(string[] args)
    {
        var commandMessage = new CommandMessage { CorrelationId = Guid.NewGuid() };
        var json = JsonConvert.SerializeObject(commandMessage);
        var myCommandMessage =  JsonConvert.DeserializeObject<CommandMessage>(json);
    }
2
cagatay