Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
反序列化springMVC中嵌套的Kotlin对象_Spring_Spring Mvc_Kotlin - Fatal编程技术网

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

反序列化springMVC中嵌套的Kotlin对象,spring,spring-mvc,kotlin,Spring,Spring Mvc,Kotlin,我试图将一个复杂的GET请求反序列化为嵌套对象的结构 GET请求如下所示: curl 'localhost:8080/?id=1&inner.id=1' 代码应该是这样的: 类RootObj(val id:Int,inner:InnerObject) 类InnerObject(值id:Int) @RestController 类搜索控制器{ @GetMapping(路径=[“/”]) fun getRoot(rootObj:rootObj):字符串{ 返回“ok” } } 我想这不是

我试图将一个复杂的GET请求反序列化为嵌套对象的结构

GET请求如下所示:

curl 'localhost:8080/?id=1&inner.id=1'
代码应该是这样的:

类RootObj(val id:Int,inner:InnerObject)
类InnerObject(值id:Int)
@RestController
类搜索控制器{
@GetMapping(路径=[“/”])
fun getRoot(rootObj:rootObj):字符串{
返回“ok”
}
}
我想这不是开箱即用的,因为spring不知道如何正确地创建这个嵌套结构

Parameter specified as non-null is null: [...] parameter inner","path":"/"}%
有没有办法克服这个问题?也许提供一个完全定制的反序列化程序代码


作为替代解决方案,我想我可以展平对象层次结构,但要做到这一点,我必须能够将像
inner.id
这样的查询参数映射到名为
innerId

的字段,Spring实际上可以将查询参数直接映射到自定义对象,但是您需要为自定义对象构造函数的参数提供默认值

因此,您需要如下定义您的类,以使其正常工作

class RootObj(val id: Int = 0, val inner: InnerObject = InnerObject(0))
class InnerObject(var id: Int = 0)

请注意,
InnerObject
id
字段必须声明为
var
,Spring才能映射它。然后,
curl'localhost:8080/?id=1&internal.id=1'
就可以了。

谢谢,默认参数是一个很好的建议。当然,最好能够保持参数的正确不变性。。。