Jaw*_*Zeb 5 android web-services retrofit
如何为改装请求创建动态对象。例如示例请求1:
"answer" : {
"Aggravating factor" : {
"value_dropdown" : "None"
},
"Associated factors" : {
"value" : "1"
}
}
Run Code Online (Sandbox Code Playgroud)
示例请求2:
"answer" : {
"Intensity : {
"value_dropdown" : "Major"
},
"Duration" : {
"value" : "5"
}
}
Run Code Online (Sandbox Code Playgroud)
因此,每次请求模型发生变化时,我都会从最终用户填写的答复表单中收集所有这些参数名和值,然后如何使用它来创建具有动态值的请求模型,即“ answer”:{{” parameter名称”:“值”}}。
我的努力:带有序列化输出的静态模型:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
此模型请求在日志下方打印:
{
"answer": [
{
"question_title": "Aggravating factor",
"questions": [
{
"_type": "value_dropdown",
"_value": "None"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
使用 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;
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
RequestSelectedAnswers request = new RequestSelectedAnswers();
request.getAnswers().put("Intensity", someArrayOrAnotherMap);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |