2016-10-20 2 views
-1

Я использую 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); 

я получаю следующее сообщение об ошибке:

Cannot convert from byte[] to ExtendedScanMessage

Я могу удалить тип, например:

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

Но тогда вывод не будет сериализован для моего класса.

Я что-то упустил?

+0

Да, вы Отсутствие чего-то 'ExtendedScanMessage' не является' byte [] '. Без какой-либо десериализации он никогда не получит что-то еще. Теперь вы пытаетесь сериализовать этот массив байтов на другой массив байтов. Не уверен, что это значит. –

+0

Сериализация делает строку из объекта. то, что вы хотите сделать, это DESERIALIZE – Misiakw

+0

@Misiakw Но тогда сначала от байтового массива до строки. –

ответ

0

в зависимости от кодировки Вы используете, вы должны написать что-то, как в коде ниже

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

в зависимости от вашей кодировки Вы можете использовать некоторые выполнены из следующих: Encoding.DefaultEncoding.BigEndianUnicodeEncoding.UTF32Encoding.UTF7Encoding.UTF8Encoding.Unicode

Смежные вопросы