2016-06-14 3 views
0

リストを含むjsonオブジェクトを解析しようとしています。フィールドがJava Listによってサポートされている場合はリストを解析できますが、フィールドがScalaリストでサポートされている場合は失敗します。 Scala ListとJava Listの解析の違いは何ですか?これを解析してScala Listにするにはどうすればよいですか?jsonをJavaリストに解析するが、スカラリストではないのはなぜですか?

object JsonParsingExample extends App { 
    val objectMapper = new ObjectMapper() 

    // This line succeeds. 
    objectMapper.readValue("""{"list": ["a","b"]}""", classOf[JavaList]) 

    // This line fails. 
    objectMapper.readValue("""{"list": ["a","b"]}""", classOf[ScalaList]) 
} 

case class JavaList() { 
    @JsonProperty(value = "list") 
    var myList: java.util.ArrayList[String] = null 
} 

case class ScalaList() { 
    @JsonProperty(value = "list") 
    var myList: List[String] = null 
} 

私はエラーメッセージは次のとおりです。いずれかの抽象型を行う必要があります。

com.fasterxml.jackson.databind.JsonMappingException:scala.collection.immutable.List、問題のインスタンスを作成することはできませんコンクリートの型にマッピングされたカスタムデシリアライザを持っている、またはデフォルトでScalaの種類については何も知らない追加の型情報

+2

これを最初に追加してください: 'objectMapper.registerModule(DefaultScalaModule)' – Dima

答えて

1

ジャクソンでインスタンス化することができる(それ以外の場合はscala-libraryに依存しなければなりません)。教えるには、jackson-module-scalaを使用してください。

関連する問題