在改造中创建动态对象请求

Posted

技术标签:

【中文标题】在改造中创建动态对象请求【英文标题】:Create Dynamic Object Request In Retrofit 【发布时间】:2019-09-21 05:34:33 【问题描述】:

如何为改造请求创建动态对象。例如 示例请求 1:

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

示例请求 2:

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

所以每次请求模型都在变化, 我有从答案表单中收集的所有这些参数名称和值 由最终用户填充,那么如何使用它来创建具有动态值的请求模型,即 "answer" : "parameter name" : "value"。

我的努力: 带有序列化输出的静态模型:

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"
        
      ]
    
  ]

【问题讨论】:

我们可以在这里使用通用对象。你试过了吗? @TheAnkush 使用 TreeMap 解决了它,然后将 TreeMap 的键视为参数名,将值视为值。感谢您的回复 【参考方案1】:

使用 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);

【讨论】:

以上是关于在改造中创建动态对象请求的主要内容,如果未能解决你的问题,请参考以下文章

在 Loopback 4 中创建一个模拟请求对象

在 Spring Boot 中创建动态服务

在一个请求中接受一组动态大小和常见标量类型的 GraphQL 突变

改造中的静态标题和动态标题问题

如何在 nuxt.js 中创建动态锚链接?

如何在一个请求中在 Mongoose 中创建多个文档