【问题标题】:Spring SCALA return list in RestControllerRestController 中的 Spring SCALA 返回列表
【发布时间】:2018-06-06 06:15:02
【问题描述】:

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

结果是:

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

{"empty":false,"traversableAgain":true}

我是否需要导入 Jackson ObjectMapper com.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
}

【问题讨论】:

    标签: json spring scala rest serialization


    【解决方案1】:

    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
      }
    }
    

    结果将是:

    [GET] http://localhost:9090/devices
    [{"name":"first device"},{"name":"second device"}]
    

    记得把结果类型改成:java.util.List[Device]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 2016-01-08
      • 1970-01-01
      • 2015-07-24
      • 2020-11-17
      • 2020-11-14
      相关资源
      最近更新 更多