是否有开箱即用的方法来解析json4s的2元组列表?

时间:2017-06-06 21:18:26

标签: scala json4s

假设:

implicit val formats = DefaultFormats

val json =
  """[
      {"myType":"type1","things":["1","2","3","4","5","6"]},
      {"myType":"type1","things":["1","2","3","4","5","6"]}
    ]"""

case class Stuff(myType: String, things: List[String])
parse(json).extract[List[Stuff]]

Scala在运行时产生此错误:

An exception or error caused a run to abort: Temp and Temp$$anonfun$1$Stuff$3 disagree on InnerClasses attribute
java.lang.IncompatibleClassChangeError: Temp and Temp$$anonfun$1$Stuff$3 disagree on InnerClasses attribute

是否有一种开箱即用的方法可以用json4s解析它,或者这是自定义序列化器的情况?

json4s版本是3.5.2

由于系统限制,

scala版本较旧,2.10.4

1 个答案:

答案 0 :(得分:1)

你在范围内有一个隐含的Formats对象吗?

extract方法需要隐式格式参数。 Json4s为Lists等提供了默认格式。

以下代码适用于我

import org.json4s.DefaultFormats
import org.json4s.native.JsonMethods.parse

implicit val formats = DefaultFormats

val json =
  """[
      {"myType":"type1","things":["1","2","3","4","5","6"]},
      {"myType":"type1","things":["1","2","3","4","5","6"]}
  ]"""

case class Stuff(myType: String, things: List[String])
parse(json).extract[List[Stuff]]


res0: List[Stuff] = List(Stuff(type1,List(1, 2, 3, 4, 5, 6)), Stuff(type1,List(1, 2, 3, 4, 5, 6)))

json4s版本3.2.11

scala版本2.11

如果你在范围内有一个隐式格式化程序,它可能是json4s Reflector中的一个错误。在不同的地方声明您的Stuff案例类可能会解决问题。有关详细信息,请参阅此github问题https://github.com/json4s/json4s/issues/84

相关问题