首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到FromRecord的隐式值

找不到FromRecord的隐式值
EN

Stack Overflow用户
提问于 2017-07-24 17:04:56
回答 1查看 782关注 0票数 1

我正在尝试使用avro & avro4s,但在运行一个愚蠢的示例时遇到了麻烦。

我甚至不能在源代码库中找到自己的测试版本来编译- https://github.com/sksamuel/avro4s/blob/master/avro4s-core/src/test/scala/com/sksamuel/avro4s/AvroJsonInputTest.scala#L14-L20

我得到了标题could not find implicit value for parameter fromRecord: com.sksamuel.avro4s.FromRecord[Foo]中提到的错误。

代码语言:javascript
复制
package test

import java.io.ByteArrayInputStream

import com.sksamuel.avro4s._
import org.specs2.mutable.Specification

class AvroSpec extends Specification {
  "My classes" should {
    "be deserialized by avro" in {
      case class Foo(num: Int, name: String)
      val json = """{ "num": 17, "name": "jibba-jabbba" }"""
      val inst = Foo(num = 17, name = "jibba-jabba")
      val in =  new ByteArrayInputStream(json.getBytes("UTF-8"), 0, json.length)
      val foo = new AvroJsonInputStream[Foo](in).iterator.toSet
      in.close()

      foo mustEqual Set(inst)
    }
  }
}

我使用的是Scala 2.11.8和avro 1.7.0。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-07-24 19:54:15

将case类声明移到方法定义之外:

代码语言:javascript
复制
package test

import java.io.ByteArrayInputStream

import com.sksamuel.avro4s._
import org.specs2.mutable.Specification

case class Foo(num: Int, name: String)
class AvroSpec extends Specification {
  "My classes" should {
    "be deserialized by avro" in {
      val json = """{ "num": 17, "name": "jibba-jabbba" }"""
      val inst = Foo(num = 17, name = "jibba-jabba")
      val in =  new ByteArrayInputStream(json.getBytes("UTF-8"), 0, json.length)
      val foo = new AvroJsonInputStream[Foo](in).iterator.toSet
      in.close()

      foo mustEqual Set(inst)
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45276413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档