无法强制转换类型为';的对象;Newtonsoft.Json.Linq.JObject';以键入<;My

本文关键字:Linq Json JObject My lt Newtonsoft 转换 类型 对象 | 更新日期: 2023-09-27 17:59:09

此代码:

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

给出以下错误消息:

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

这是CommandMessage类:

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

我在这里错过了什么?

无法强制转换类型为';的对象;Newtonsoft.Json.Linq.JObject';以键入<;My

反序列化时需要指定类型。

任一:

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

或者:

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

您需要给出类型。JsonConvert类对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);
    }