Impossible de convertir l'objet de type 'Newtonsoft.Json.Linq.JObject' de type <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 le CommandMessage classe:
public class CommandMessage
{
public Guid CorrelationId { get; set; }
}
Ce qui me manque ici?
Pouvez-vous montrer votre
oui je l'ai posté le code de la CommandMessage classe. Il y est 🙂
Pourquoi ne pas simplement utiliser
CommandMessage
classe?oui je l'ai posté le code de la CommandMessage classe. Il y est 🙂
Pourquoi ne pas simplement utiliser
JsonConvert.DeserializeObject(json,commandMessage.GetType());
? Semble que c'est ce que la documentation wanst vous faire: newtonsoft.com/json/help/html/...
OriginalL'auteur Tony | 2016-07-28
Vous devez vous connecter pour publier un commentaire.
Vous devez spécifier le type lors de la désérialisation.
:
Ou:
JsonConvert.DeserializeObject()
méthode, ce type est retourné? Est-il unobject
, ou est-il en utilisant le type deT
du générique de la signature? Dans ce cas, ce seraitT
être -null
?Le non-générique version de DeserializeObject retourne
object
qui vous avez alors besoin de cast vers le type vous attendent, comme indiqué dans ma réponse ci-dessus (le deuxième exemple). Si vous utilisez la surcharge sans un paramètre de type (comme l'OP était en train de faire), puis un JObject sera retourné.OriginalL'auteur Brian Rogers
Vous avez besoin de donner le type. JsonConvert classe ne sait rien au sujet de votre CommandMessage classe
OriginalL'auteur cagatay