Scala无形状隐式解析StackOverflower带有argonautShapess

Scala无形状隐式解析StackOverflower带有argonautShapess,scala,shapeless,argonaut,argonaut-shapeless,Scala,Shapeless,Argonaut,Argonaut Shapeless,我使用argonautshapess来定义一些json编解码器 当我为我的编解码器提供类型时,我会得到StackOverflower错误,但是如果我不使用该类型,它就会工作。我如何提供类型 我对这个问题的理解是,从[A:DecodeJson]=隐式[DecodeJson[A]]的def的隐式查找在同一行implicit def fooCodec:DecodeJson[Foo]上找到我的定义,因此是递归的 是否有其他方式可以让我提供该类型?理想情况下,我希望在我的项目中有一个对象,在这里我定义了所

我使用argonautshapess来定义一些json编解码器

当我为我的编解码器提供类型时,我会得到StackOverflower错误,但是如果我不使用该类型,它就会工作。我如何提供类型

我对这个问题的理解是,从[A:DecodeJson]=隐式[DecodeJson[A]]的
def的隐式查找在同一行
implicit def fooCodec:DecodeJson[Foo]
上找到我的定义,因此是递归的

是否有其他方式可以让我提供该类型?理想情况下,我希望在我的项目中有一个对象,在这里我定义了所有的代码,它们可能相互依赖

import $ivy.`com.github.alexarchambault::argonaut-shapeless_6.2:1.2.0-M4` 
import argonaut._, Argonaut._ 
case class Foo(a: Int)
object SomeCodecs {
    import ArgonautShapeless._
    // this doesnt work
    implicit def fooCodec: DecodeJson[Foo] = DecodeJson.of[Foo]
 } 
import SomeCodecs._
"""{"a":1}""".decode[Foo]

java.lang.StackOverflowError
  ammonite.$sess.cmd3$SomeCodecs$.fooCodec(cmd3.sc:3)
如果我把打字机关了就行了

object SomeCodecs {
    import ArgonautShapeless._
    // this works
    implicit def fooCodec = DecodeJson.of[Foo]
 } 
import SomeCodecs._
"""{"a":1}""".decode[Foo]
res4: Either[Either[String, (String, CursorHistory)], Foo] = Right(Foo(1))

谢谢

Circe半自动推导似乎可以做到这一点。这似乎是可能的Circe半自动推导。