Как сгенерировать динамический объект json для тела запроса

В тексте запроса ниже количество значений «questionOne», «questionTwo» и т. д. меняется для каждого учащегося. Как я могу динамически генерировать тело запроса в соответствии с изменяющимся значением ключа и значения.

Образец запроса один

"quiz": {  
   "name":"Jacob",
   "sid": "STD_500",
   "questionOne":"",
   "questionTwo":""
}

Образец запроса два

"quiz": {  
    "name":"Annie",
    "sid": "STD_200",
    "questionOne":"",
    "questionTwo":""
    "questionThree":"",
    "questionFour":""
}

Класс данных:

data class Quiz (
    val name : String?,
    val sid : String?,
     val questions: HashMap<String, String>?

     )

0
0
58
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вопросы должны быть в массиве json. Пример:

 "quiz": {  
   "name":"Jacob",
   "sid": "STD_500",
   "questions" : [
     {"key": "questionOne", "value": ""},
     {"key": "questionTwo", "value": ""},
   ]
 }

серверная часть ожидает и возражает, как показано в вопросе

chichi 21.03.2022 09:09
Ответ принят как подходящий

Я полагаю, что единственным способом было бы определить викторину как HashMap вместо Quiz объекта. Я предполагаю, что у вас сейчас есть RequestBody что-то вроде этого?

data class RequestBody(
    val quiz: Quiz
)

Затем измените его на

data class RequestBody(
    val quiz: HashMap<String,String>
)

Но это такой плохой дизайн, я предлагаю выработать с бэкэндом решение, предложенное в ответе Торнике.

Судя по вашему описанию, это плохое дизайнерское решение с внутренней стороны. У вас должен быть вопрос с одним параметром, по которому вы будете передавать список классов вопросов, подобных этому.

Сначала создайте отдельный класс данных Вопрос

data class Question (
val key:String, 
val value:String)

чем установить список этого класса данных как параметр типа вопросов в модели запроса, подобной этой

data class Quiz (
val name : String?,
val sid : String?,
val questions:List<Question>

 )

Я предполагаю, что вы используете библиотеку Gson для преобразования классов данных в json и наоборот.

Решение для данной ситуации состоит в том, чтобы создать отдельные модели запросов для каждого количества вопросов, которые вы отправляете в BE,

НО я бы настоятельно советовал не делать этого и заставить парней из бэкенда изменить работу вашего API.

Другие вопросы по теме