使用 Jackson 反序列化 Scala 列表

2023-12-22

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

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

我有一个客户 ObjectMapper,其中注册了 DefaultScalaModule。根据https://github.com/FasterXML/jackson-module-scala/wiki/FAQ https://github.com/FasterXML/jackson-module-scala/wiki/FAQ,添加 @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 类型


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Jackson 反序列化 Scala 列表 的相关文章

随机推荐