【问题标题】:Why does Kotlin with Spring MVC JSON return an empty object?为什么带有 Spring MVC JSON 的 Kotlin 返回一个空对象?
【发布时间】:2017-06-26 03:20:04
【问题描述】:

我一直在使用服务器端 Kotlin、Spring MVC 和 Jackson。 我使用http://start.spring.io/ 构建了一个简单的应用程序,但我可能在JsonView 注释中犯了一个错误。

这个:

@RestController

class MyRestController {
    @RequestMapping("/user")
    @JsonView(User::class)
    fun getUser() : User = User("Fred",50)
}

data class User(val name: String, val age: Int)

...当使用 curl 调用时

ph@sleek ~ $ curl -X GET http://localhost:8080/user; echo
{}
ph@sleek ~ $ 

...结果是{},而我期望{"name":"Fred","age":50}。是不是我做错了什么?

【问题讨论】:

  • 您还需要使用JsonView 注释您的数据类,以告知哪些属性将包含在哪个视图中。

标签: spring-mvc jackson kotlin


【解决方案1】:

比我想象的要简单得多。发现Jackson可以很好的序列化对象后,我开始调整,发现默认比配置好:

class MyRestController {
    @RequestMapping("/user")
    fun getUser() : User = User("Fred",50)
}

完美:

ph@sleek ~ $ curl -X GET http://localhost:8080/user; echo
{"name":"Fred","age":50}

【讨论】:

    【解决方案2】:

    如果您确实想使用@JsonView(在许多情况下都是必需的),在我将jackson-module-kotlin 依赖项添加到我的项目之前,我遇到了同样的空对象问题。

    compile 'com.fasterxml.jackson.module:jackson-module-kotlin'
    

    请看这里:https://stackoverflow.com/a/48019143/5258628

    【讨论】:

      猜你喜欢
      • 2018-11-08
      • 2020-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 2016-06-04
      • 2021-08-10
      相关资源
      最近更新 更多