Avro4S:反序列化抽象数据类型时出错(无法找到类型为FromRecord的证据参数的隐式值)

时间:2017-02-15 14:03:06

标签: scala avro4s

我正在使用avro4s

https://github.com/sksamuel/avro4s

我写了这段代码

  import java.io.ByteArrayOutputStream
  import com.sksamuel.avro4s._

  sealed trait Dibble
  case class Dobble(str: String) extends Dibble
  case class Dabble(dbl: Double) extends Dibble

  case class Drapper(dibble: Dibble)

  val drapperIn = Drapper(Dabble(2.0))
  val bios = new ByteArrayOutputStream
  val avro = AvroOutputStream.binary[Drapper](bios)
  avro.write(drapperIn)
  avro.close()

  val is = AvroInputStream.binary[Drapper](bios.toByteArray)
  val drapperOut = is.iterator().toList.head
  is.close()

  println(drapperIn == drapperOut)

但是在读取二进制数据时出现以下错误

  

错误:(18,47)无法找到证据参数的隐含值   输入com.sksamuel.avro4s.FromRecord [A $ A449.this.Drapper] lazy val =   AvroInputStream.binaryDrapper                                                ^错误:(18,47)方法二进制文件的参数不够:(隐式证据$ 13:   com.sksamuel.avro4s.SchemaFor [A $ A449.this.Drapper],含蓄   证据$ 14:   com.sksamuel.avro4s.FromRecord [A $ A449.this.Drapper])com.sksamuel.avro4s.AvroBinaryInputStream [A $ A449.this.Drapper]。   未指定的值参数证据$ 14。懒惰的是=   AvroInputStream.binaryDrapper                                                ^

0 个答案:

没有答案