2016-05-01 12 views
0

AvroをAvro C#ライブラリのバイト配列にシリアル化する方法を探しています。上記のリンクからコピー https://cwiki.apache.org/confluence/display/AVRO/FAQ#FAQ-SerializingtoabytearrayAvro c#ライブラリを使用してAvroをバイト配列にシリアル化する方法は?

コード:アブロドキュメントからのリンクを以下に説明するようにアブロJavaライブラリのために行うためのリンクがあります

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
BinaryEncoder encoder = EncoderFactory.get().binaryEncoder(out, null); 

DatumWriter<User> writer = new SpecificDatumWriter<User>(User.getClassSchema()); 

writer.write(user, encoder); 
encoder.flush(); 
out.close(); 
byte[] serializedBytes = out.toByteArray(); 

しかし、私はアブロのC#で行うための方法を発見していませんとしょうかん。私は基本的に上記のコードに相当するC#を探しています。

答えて

0

これらのメソッドを使用して、オブジェクトをバイト配列に変換したり、バイト配列に変換することができます。コードはhttps://stackoverflow.com/a/18205093/6138713から

// Convert an object to a byte array 
private byte[] ObjectToByteArray(Object obj) 
{ 
    if(obj == null) 
     return null; 

    BinaryFormatter bf = new BinaryFormatter(); 
    MemoryStream ms = new MemoryStream(); 
    bf.Serialize(ms, obj); 

    return ms.ToArray(); 
} 

// Convert a byte array to an Object 
private Object ByteArrayToObject(byte[] arrBytes) 
{ 
    MemoryStream memStream = new MemoryStream(); 
    BinaryFormatter binForm = new BinaryFormatter(); 
    memStream.Write(arrBytes, 0, arrBytes.Length); 
    memStream.Seek(0, SeekOrigin.Begin); 
    Object obj = (Object) binForm.Deserialize(memStream); 

    return obj; 
} 
+0

から抽出されました私は不明確であったかもしれないので私の質問を更新しました。私はAvro ByteArrayが技術をシリアライズするのを探していました。 –

+0

あなたのavroオブジェクトは引き続きc#.netのオブジェクトのタイプとみなされます。したがって、このメソッドを引き続き使用できます。バイト配列に変換するオブジェクトは何でも渡してください。 –