RestController 中的 Spring SCALA 返回列表

kos*_*cki 2 rest serialization spring json scala

如何在 Sprint @RestController 中返回 SCALA列表或序列。列表返回值未正确序列化

结果是:

[GET] http://localhost:9090/devices

{"empty":false,"traversableAgain":true}
Run Code Online (Sandbox Code Playgroud)

我是否需要导入 Jackson ObjectMappercom.fasterxml.jackson才能在列表上进行正确的 REST 获取结果序列化?

我的 RestController 看起来像这样:

@RestController
class DeviceController {

  var devices = Set[Device]()

  @RequestMapping(value = Array("/devices"), method = Array(RequestMethod.GET))
  def accounts() : List[Device] =  devices.toList
}
Run Code Online (Sandbox Code Playgroud)

kos*_*cki 5

Spring 的设计并未考虑到 SCALA - 因此它无法正确处理 SCALA 列表。它也不能处理 Seq[Device]。

只需使用 SCALA 的JavaConvertes包即可轻松将 SCALA 列表转换为 JAVA 列表。

import scala.collection.JavaConverters._

@RestController
class DeviceController {

  var devices = Set[Device]()

  @RequestMapping(value = Array("/devices"), method = Array(RequestMethod.GET))
  def accounts() : java.util.List[Device] =  {
    devices.toList.asJava
  }
}
Run Code Online (Sandbox Code Playgroud)

结果将是:

[GET] http://localhost:9090/devices
[{"name":"first device"},{"name":"second device"}]
Run Code Online (Sandbox Code Playgroud)

请记住将结果类型更改为: java.util.List[Device]