如何使用kotlin中的数据类发送请求

如何使用kotlin中的数据类发送请求,kotlin,serialization,Kotlin,Serialization,我需要一个请求或api,但我无法传递方法中的所有参数(因为项目中的detekt不允许传递超过6个参数)。所以我创建了一个数据类。但我的输出方式不正确。 我简化了我的代码: class A { val test = viewModel.RequestParam ("a", "b","c", "d") viewModel.requestTest("nome", "age", tes

我需要一个请求或api,但我无法传递方法中的所有参数(因为项目中的detekt不允许传递超过6个参数)。所以我创建了一个数据类。但我的输出方式不正确。 我简化了我的代码:

class A {
val test = viewModel.RequestParam ("a", "b","c", "d")
viewModel.requestTest("nome", "age", test)

}
输出:

"body": {
        "nome": "jonas",
        "age": "20",
        "params": {
                 "a": "a",
                 "b": "b",
                 "c": "c",
                 "d": "d",
                 "e": "e",
         }
      }
但我需要这样做:

"body": {
        "nome": "jonas",
        "age": "20",
        "a": "a",
        "b": "b",
        "c": "c",
        "d": "d",
        "e": "e",
         }

在JSON语言中,{,}括号内的每个项表示另一个对象的名称。您有两个名为RequestUser和RequestParam的对象,但您需要一个对象。你可以这样用

data class RequestParam (val name: String? = "", 
                         val age: Int? = 0, 
                         val a: String? = "", 
                         val b: String? = "", 
                         val c: String? = "", 
                         val d: String? = "")

但是在我的RequestUser类中,我需要一个viewModel.RequestParam类型的变量,因此它不在根中,因为它将在该变量中,如果它确实代表一个用户,我将称之为
RequestUser
或只是
User
。但是,是的,我同意这个解决方案——OP没有提供任何理由说明为什么这些参数需要封装在一个单独的对象中。请包括用于序列化的库/工具。除非您提供该信息,否则无法回答您的问题。在我的RequestUser数据类中,我导入“com.google.gson.annotations.serializedName这是否回答了您的问题?你没有解释这些a,b,c参数是什么。但是,乍一看,为什么不干脆去掉
RequestTest
,直接将所有这些参数添加到
RequestUser
,然后将用户传递到
RequestTest
函数?这将消除将嵌套对象序列化为属性的任何需要
"body": {
        "nome": "jonas",
        "age": "20",
        "a": "a",
        "b": "b",
        "c": "c",
        "d": "d",
        "e": "e",
         }
data class RequestParam (val name: String? = "", 
                         val age: Int? = 0, 
                         val a: String? = "", 
                         val b: String? = "", 
                         val c: String? = "", 
                         val d: String? = "")