如何为请求正文生成动态 json 对象
How to generate dynamic json object for request body
在下面的请求正文中,值“questionOne”、“questionTwo”等的数量因每个学生而异。我如何动态生成请求主体以适应键和值的变化值。
样品请求一
"quiz": {
"name":"Jacob",
"sid": "STD_500",
"questionOne":"",
"questionTwo":""
}
样品请求二
"quiz": {
"name":"Annie",
"sid": "STD_200",
"questionOne":"",
"questionTwo":""
"questionThree":"",
"questionFour":""
}
数据class:
data class Quiz (
val name : String?,
val sid : String?,
val questions: HashMap<String, String>?
)
问题应该在 json 数组中。示例:
"quiz": {
"name":"Jacob",
"sid": "STD_500",
"questions" : [
{"key": "questionOne", "value": ""},
{"key": "questionTwo", "value": ""},
]
}
我想唯一的方法是将测验定义为 HashMap
而不是 Quiz
对象。
我猜你现在有一个 RequestBody
这样的地方?
data class RequestBody(
val quiz: Quiz
)
然后改成
data class RequestBody(
val quiz: HashMap<String,String>
)
但这样的设计有点糟糕,我建议与后端一起制定 Tornike 的回答中提出的解决方案
根据您的描述,这是后端方面的错误设计决策
您应该有一个参数问题,您将在其上传递问题列表 classes
首先创建一个单独的数据class问题
data class Question (
val key:String,
val value:String)
比设置此数据列表 class 作为请求模型中的问题参数类型
data class Quiz (
val name : String?,
val sid : String?,
val questions:List<Question>
)
我假设您正在使用 Gson 库将数据 classes 转换为 json,反之亦然
给定情况的解决方案是为您发送给 BE 的每个问题创建单独的请求模型,
但我强烈建议不要这样做,并让后端人员更改 api 的工作方式
在下面的请求正文中,值“questionOne”、“questionTwo”等的数量因每个学生而异。我如何动态生成请求主体以适应键和值的变化值。
样品请求一
"quiz": {
"name":"Jacob",
"sid": "STD_500",
"questionOne":"",
"questionTwo":""
}
样品请求二
"quiz": {
"name":"Annie",
"sid": "STD_200",
"questionOne":"",
"questionTwo":""
"questionThree":"",
"questionFour":""
}
数据class:
data class Quiz (
val name : String?,
val sid : String?,
val questions: HashMap<String, String>?
)
问题应该在 json 数组中。示例:
"quiz": {
"name":"Jacob",
"sid": "STD_500",
"questions" : [
{"key": "questionOne", "value": ""},
{"key": "questionTwo", "value": ""},
]
}
我想唯一的方法是将测验定义为 HashMap
而不是 Quiz
对象。
我猜你现在有一个 RequestBody
这样的地方?
data class RequestBody(
val quiz: Quiz
)
然后改成
data class RequestBody(
val quiz: HashMap<String,String>
)
但这样的设计有点糟糕,我建议与后端一起制定 Tornike 的回答中提出的解决方案
根据您的描述,这是后端方面的错误设计决策 您应该有一个参数问题,您将在其上传递问题列表 classes
首先创建一个单独的数据class问题
data class Question (
val key:String,
val value:String)
比设置此数据列表 class 作为请求模型中的问题参数类型
data class Quiz (
val name : String?,
val sid : String?,
val questions:List<Question>
)
我假设您正在使用 Gson 库将数据 classes 转换为 json,反之亦然
给定情况的解决方案是为您发送给 BE 的每个问题创建单独的请求模型,
但我强烈建议不要这样做,并让后端人员更改 api 的工作方式