2016-10-20 2 views
-1

을 사용하여 byte[]을 특정 객체로 변환하려고합니다. 나는 시도하고 특정 클래스에 직렬화 때 다음과 같은 오류 얻을 수 있도록특정 유형을 사용하여 객체 직렬화

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

처럼

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

을 그리고 :

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); 

아래 코드처럼 뭔가를 작성해야 사용 인코딩에 따라 당신은 folowing의 일부 사용할 수 있습니다 : Encoding.DefaultEncoding.BigEndianUnicodeEncoding.UTF32Encoding.UTF7Encoding.UTF8Encoding.Unicode