Я пытаюсь десериализовать простую строку json с помощью jackson json4s. Мне удалось заставить это работать в scala 2.11, но при обновлении до 2.12 я вижу эту ошибку:
import org.json4s._
import org.json4s.jackson.Serialization.read
implicit val formats: DefaultFormats.type = DefaultFormats
case class Person(val name: String, val address: Option[String])
В Scala 2.11, когда я запускаю набор кода, Я получаю следующее:
println(jackson.parseJson(f"""{ "name": "foo" }""").extract[Person])
Result: Person(foo,None)
В Scala 2.12 я получаю следующее:
println(jackson.parseJson(f"""{ "name": "foo" }""").extract[Person])
org.json4s.package$MappingException: unknown error
at org.json4s.Extraction$.extract(Extraction.scala:43)
at org.json4s.ExtractableJsonAstNode.extract(ExtractableJsonAstNode.scala:21)
... 52 elided
Caused by: java.lang.IndexOutOfBoundsException: 2
at scala.collection.immutable.Vector.checkRangeConvert(Vector.scala:127)
at scala.collection.immutable.Vector.apply(Vector.scala:118)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder.$anonfun$createConstructorDescriptors$6(Reflector.scala:156)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:238)
at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:62)
at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:55)
at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:49)
at scala.collection.TraversableLike.map(TraversableLike.scala:238)
at scala.collection.TraversableLike.map$(TraversableLike.scala:231)
at scala.collection.AbstractTraversable.map(Traversable.scala:108)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder.$anonfun$createConstructorDescriptors$3(Reflector.scala:142)
at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:238)
at scala.collection.mutable.ArraySeq.foreach(ArraySeq.scala:75)
at scala.collection.TraversableLike.map(TraversableLike.scala:238)
at scala.collection.TraversableLike.map$(TraversableLike.scala:231)
at scala.collection.AbstractTraversable.map(Traversable.scala:108)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder.createConstructorDescriptors(Reflector.scala:136)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder.constructorsAndCompanion(Reflector.scala:121)
at org.json4s.reflect.Reflector$ClassDescriptorBuilder.result(Reflector.scala:183)
at org.json4s.reflect.Reflector$.createDescriptor(Reflector.scala:53)
at org.json4s.reflect.Reflector$.$anonfun$describe$1(Reflector.scala:48)
at org.json4s.reflect.package$Memo.apply(package.scala:36)
at org.json4s.reflect.Reflector$.describe(Reflector.scala:48)
at org.json4s.Extraction$.$anonfun$extract$9(Extraction.scala:393)
at org.json4s.Extraction$.customOrElse(Extraction.scala:606)
at org.json4s.Extraction$.extract(Extraction.scala:392)
at org.json4s.Extraction$.extract(Extraction.scala:39)
... 53 more
Я использую следующие версии библиотек json4s:
Scala 2.11
- json4s-ast_2.11-3.5.3.jar
- json4s-core_2.11-3.5.3.jar
- json4s -jackson_2.11-3.5.3.jar
- json4s-scalap_2.11-3.5.3.jar
Scala 2.12
- json4s -ast_2.12-3.5.3.jar
- json4s-core_2.12-3.5.3.jar
- json4s-jackson_2.12-3.5.3.jar
- json4s-scalap_2.12-3.5.3.jar
Не могли бы вы сообщить мне, что я здесь делаю не так?