用Jackson反序列化Scala列表

时间:2018-09-28 10:12:45

标签: scala spring-boot jackson

我有一个返回的案例类,看起来像这样

case class Response(
  @JsonDeserialize(contentAs = classOf[java.lang.Long])
  longList: List[Long] = null)

我有一个客户ObjectMapper,它注册了DefaultScalaModule。根据{{​​3}}的说法,添加@JsonDeserialize应该可以解决问题,但不能解决

问题在我的测试中,并且出现以下错误消息

  

java.lang.ClassCastException:java.lang.Integer无法转换为java.lang.Long

     

在scala.runtime.BoxesRunTime.unboxToLong(BoxesRunTime.java:105)

测试类list.head是触发错误的原因

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class ControllerTest {
  @Autowired
  var testRestTemplate: TestRestTemplate = _
  @Autowired
  var objectMapper: ObjectMapper = _

  @Test 
  def test() : Unit = {
    val response = testRestTemplate.exchange("url", HttpMethod.GET, classOf[Response])
    val list = response.getBody.longList
    val a = list.head
  }
}

调试告诉我,我的列表实际上是包含整数的$ colon $ colon类型

0 个答案:

没有答案