使用特定类型序列化对象

时间:2016-10-20 15:19:42

标签: c# jsonserializer

我正在使用Jsonserializer.SerializeObject尝试将byte[]转换为特定对象。

消息的类结构如下:

public class ProjectMessageQueueMessage
{
    public ProjectMessageQueueMessage();
    public byte[] MessageData { get; set; }
    public string MessageID { get; set; }
    public string MessageType { get; set; }
}

当我尝试将其序列化为特定的类时,就像这样

byte[] output = JsonSerializer.SerializeObject<ExtendedScanMessage>(message.MessageData);

我收到以下错误:

  

无法从byte []转换为ExtendedScanMessage

我可以删除类型,如下:

byte[] output = JsonSerializer.SerializeObject(message.MessageData);

但是输出不会被序列化到我的班级。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

取决于您使用的编码,您应该编写类似下面的代码

var outputString = Encoding.Default.GetString(message.MessageData);
var output = JsonConvert.DeserializeObject<ExtendedScanMessage>(outputString);

根据您的编码,您可以使用以下某些内容: Encoding.Default Encoding.ASCII Encoding.BigEndianUnicode Encoding.UTF32 Encoding.UTF7 Encoding.UTF8 Encoding.Unicode