【问题标题】:Nested xml response in spring boot with Kotlin使用 Kotlin 在 Spring Boot 中嵌套 xml 响应
【发布时间】:2019-03-15 03:13:45
【问题描述】:

我想要这样的 POST 请求的 xml 响应:

<Outer>
    <abc>1</abc>
    <Inner>
        <def>2</def>
    </Inner>
</Outer>

但我明白了:

<Outer>
    <abc>1</abc>
</Outer>

代码如下:

Kotlin 数据类:

@XmlRootElement
class Outer {
    val abc = 1
    @XmlRootElement
    class Inner {val def = 2}
}

Kotlin 休息控制器:

@RestController
@RequestMapping("/")
class Controller {

    @PostMapping("/abc")
    fun registerByMail() : Outer {
        return Outer()
    }
}

请告诉我,我哪里做错了。我对 Kotlin 和 Spring-boot 都很陌生。

【问题讨论】:

  • 需要在外层class Outer { val inner = Inner() }中添加一个内层类的实例,Inner类的定义位置其实并不相关

标签: xml spring-boot kotlin


【解决方案1】:

我保留了你的模型,但使用了 jackson-dataformat-xml 而不是 JAXB 和一个 GET 请求而不是 POST:

@RestController
class Controller {

    @GetMapping("/abc")
    fun registerByMail() : Outer {
        return Outer()
    }

    @JacksonXmlRootElement
    class Outer(val abc: Int = 1) {

        @JacksonXmlProperty(localName = "Inner")
        val inner = Inner(2)

        data class Inner(val def: Int)
    }
}

你的错误是你没有提供 Inner 的实例,你只是提供了一个类定义。我为内部使用了一个数据类 (https://kotlinlang.org/docs/reference/data-classes.html),但您也可以使用一个简单的类,像我一样使用主构造函数。

【讨论】:

    猜你喜欢
    • 2023-01-24
    • 2021-07-14
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2015-06-17
    • 2020-07-01
    • 2021-07-05
    • 2017-11-09
    相关资源
    最近更新 更多