我正試圖解析包含列表的json對象。如果該字段由Java List支持,我能夠解析列表,但如果該字段由Scala列表支持,則它將失敗。解析爲Scala列表與Java列表之間有什麼區別,以及我需要更改哪些內容才能將其解析爲Scala列表?爲什麼我將json解析爲Java列表,但不是Scala列表?
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,問題的實例:抽象類型要麼需要映射到具體類型,具有自定義解串器,或用附加的類型信息
嘗試在開頭添加這個:'objectMapper.registerModule(DefaultScalaModule)' – Dima