Json4S递归方法解析需要一个结果类型

时间:2016-02-05 18:26:09

标签: scala json4s

我在scala程序中使用json4s库。

我的build.sbt看起来像

libraryDependencies ++= Seq(
  "org.json4s" % "json4s-native_2.11" % "3.3.0"
)

在我的代码中,我有一个函数

import org.json4s._
import org.json4s.native.JsonMethods._
import org.json4s.JValue
class Foo {
    def parse(content: String) = {
      val json  = parse(content)
    }
}

但IDE抱怨“递归方法解析需要结果类型”

1 个答案:

答案 0 :(得分:1)

scala编译器通常根据其实现推断出方法的返回类型,但它无法推断递归方法的类型。

消息recursive method parse needs result type是由于这个缺点。您的def parse(content: String)通过致电parse(content)进行递归。这使得该方法具有递归性(无限期,但我假设您计划稍后更改它)。为了编译它,您需要明确说明返回类型,例如: def parse(content: String): Unit

我将进一步猜测并说有parse方法从json4sJsonMethods导入。由于它具有相同的方法签名,因此被您自己的parse方法遮蔽。如果您确实想要致电JsonMethods.parse,那么您需要实际说JsonMethods.parse来澄清歧义。