Создать динамический объектный запрос в модификации - PullRequest
5 голосов
/ 02 мая 2019

Как я могу создать динамический объект для запроса на модернизацию. например пример запроса 1:

 "answer" :     {
        "Aggravating factor" :         {
            "value_dropdown" : "None"
        },
        "Associated factors" :         {
            "value" : "1"
        }
}

пример запроса 2:

 "answer" :     {
            "Intensity :         {
                "value_dropdown" : "Major"
            },
            "Duration" :         {
                "value" : "5"
            }
    }

так что каждый раз модель запроса меняется, У меня есть все эти параметры и значения, которые я собираю из формы ответа заполненный конечным пользователем, то как можно использовать его для создания модели запроса с динамическими значениями, то есть «ответ»: {{«имя параметра»: «значение»}}.

Мои усилия: статическая модель с выходом сериализации:

public class SampleModel {


    @SerializedName("answer")
    public ArrayList<QuestionAnswers> answer;

    public SampleModel() {
        answer = new ArrayList<>();
    }


    public static class QuestionAnswers {
        public String question_title;
        public List<KeyValuePaire> questions;

        public QuestionAnswers() {
            questions = new ArrayList<>();
        }
    }

    public static class KeyValuePaire {
        public String _type;
        public String _value;
    }

}

запрос этой модели печатается ниже журнала:

{
  "answer": [
    {
      "question_title": "Aggravating factor",
      "questions": [
        {
          "_type": "value_dropdown",
          "_value": "None"
        }
      ]
    }
  ]
}

1 Ответ

3 голосов
/ 09 мая 2019

Решено с помощью TreeMap, где ключ TreeMap затем обрабатывается как имя параметра, а значение как значение.

public class RequestSelectedAnswers {

    @SerializedName("answer")
    TreeMap answers;

    public RequestSelectedAnswers() {
        answers = new TreeMap();
    }

    public TreeMap getAnswers() {
        return answers;
    }

    public void setAnswers(TreeMap answers) {
        this.answers = answers;
    }

}

И используйте его как:

RequestSelectedAnswers request = new RequestSelectedAnswers();       
request.getAnswers().put("Intensity", someArrayOrAnotherMap);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...