2016-09-07 25 views
6

Ben şu soru var: Dizisine scala herhangi türü dönüştürme [Bayt] ve arka

Ben herhangi bir değer olarak ilan edilir benim programda değişken değeri vardır.

Ben

nasıl bayt Array serialize ve geri olabilir .. bayt dizisi bu değeri dönüştürmek istediğiniz

? Double veya Int gibi diğer türlerle ilgili örnekler buldum, ancak Hiçbiri gibi değil.

+0

nasıl bir şey serileştirebilirsiniz? –

+0

Aynı soruya sahibim .. Bu bir kullanıcıdan gelen bir giriş, görüntü, sayı, dizi olabilir .. ve sonra Array [Byte] 'ya dönüştürmem gerekiyor, bu yüzden DB – Ectoras

+0

'a saklayabilirim. Kullanıcıdan girdi, o zaman zaten bir "String", değil mi? Öyleyse neden sadece "String" yi saklamıyorsun? –

cevap

8

İhtiyacınız olanı yapmalı. Java'da bunu nasıl yapacağına oldukça benziyor. Ne olduğunu bilmiyorum

import java.io.{ByteArrayInputStream, ByteArrayOutputStream, ObjectInputStream, ObjectOutputStream} 

object Serialization extends App { 

    def serialise(value: Any): Array[Byte] = { 
    val stream: ByteArrayOutputStream = new ByteArrayOutputStream() 
    val oos = new ObjectOutputStream(stream) 
    oos.writeObject(value) 
    oos.close 
    stream.toByteArray 
    } 

    def deserialise(bytes: Array[Byte]): Any = { 
    val ois = new ObjectInputStream(new ByteArrayInputStream(bytes)) 
    val value = ois.readObject 
    ois.close 
    value 
    } 

    println(deserialise(serialise("My Test"))) 
    println(deserialise(serialise(List(1)))) 
    println(deserialise(serialise(Map(1 -> 2)))) 
    println(deserialise(serialise(1))) 
} 
+0

Bu çalışmalara çok teşekkür ederim. Ben de aşağıdakileri buldum .. çözümünüzle arasındaki fark nedir? – Ectoras

-2
def anyTypeToByteArray(value: Any): Array[Byte] = { 
    val valueConverted :Array[Byte] = SerializationUtils.serialize(value.isInstanceOf[Serializable]) 
    valueConverted 
    } 

    def ByteArrayToAny(value: Array[Byte]): Any = { 
    val valueConverted: Any = SerializationUtils.deserialize(value) 
    valueConverted 
    } 
+0

Sizinki üçüncü taraf bir kütüphane kullanıyor. –

+0

JasperM'nin bahsettiği gibi, bu Apache müşterek kullanımlarını kullanır. Ayrıca getirmek için istekliyiz uygun bir çözüm. –

+0

yardımlarınız için teşekkürler! – Ectoras

İlgili konular