gpt4 book ai didi

spring - 在springMVC中反序列化嵌套的Kotlin对象

转载 作者:行者123 更新时间:2023-12-02 13:28:30 29 4
gpt4 key购买 nike

我正在尝试将复杂的GET请求反序列化为嵌套对象的结构。
GET请求看起来像:

curl 'localhost:8080/?id=1&inner.id=1'
并且代码应如下所示:
class RootObj(val id: Int, inner: InnerObject)
class InnerObject(val id: Int)

@RestController
class SearchController {

@GetMapping(path = ["/"])
fun getRoot(rootObj: RootObj): String {
return "ok"
}
}
我猜这不是开箱即用的,因为spring不知道如何正确地创建此嵌套结构。
Parameter specified as non-null is null: [...] parameter inner","path":"/"}%
有办法解决这个问题吗?也许提供完全自定义的反序列化代码?
作为替代解决方案,我想我可以展平对象层次结构,但是为此,我必须能够将诸如 inner.id的查询参数映射到名为 innerId的字段

最佳答案

Spring实际上可以将查询参数直接映射到自定义对象,但是您需要为自定义对象构造函数的参数提供默认值。
因此,您需要按以下方式定义您的类(class)才能正常工作

class RootObj(val id: Int = 0, val inner: InnerObject = InnerObject(0))
class InnerObject(var id: Int = 0)
请注意,必须将 idInnerObject字段声明为 var,Spring才能对其进行映射。然后 curl 'localhost:8080/?id=1&inner.id=1'可以正常工作。

关于spring - 在springMVC中反序列化嵌套的Kotlin对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62834858/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com