创建通用的API发布正文请求?

时间:2019-11-18 08:42:11

标签: java json http-post

我有以下帖子正文请求-

[
    {
        "filters": {      
            "StockQuantity": {
                "value": [0],
                "cretiria": 0,
                "type": 1
            },
            "Price": {
                "value": [0],
                "cretiria": 0,
                "type": 1
            }
        }
    }
]

问题是,您现在看到的StockQuantityPrice可以更改为许多具有不同名称的参数,而我不能仅创建具有这些名称的类。

可以这么说,三个参数valuecretiriatype并不是对所有类型都改变。

我想创建一个具有“过滤器”类型的通用主体,我可以根据需要轻松添加任意数量的具有不同名称的过滤器,所有这些过滤器均具有3个参数-value(通用类型列表),{{1 }}(int)和cretiria(int)

这是我目前拥有的...这很糟糕,不是通用的,而且很难编码-

type

1 个答案:

答案 0 :(得分:1)

您是否考虑将过滤器转换为对象数组,并将“ StockQuantity”,“ Price”或其他键以及值,类型和条件字段一起移动到对象主体中?像

{
  "filters": [
    {
      "filter": "StockQuantity",
      "value": [0],
      "type": 1,
      "criteria": 1
    },
    {
      "filter": "Price",
      "value": [0],
      "type": 1,
      "criteria": 1
    }
  ]
}

从这里开始,您的Pojo将非常通用

public class Filters {

    private List<Filter> filters;

    public List<Filter> getFilters() {
        return filters;
    }

    public void setFilters(List<Filter> filters) {
        this.filters = filters;
    }


    private class Filter {

        private String filter;
        private List<Integer> value;
        private int type;
        private int criteria;

        public String getFilter() {
            return filter;
        }

        public void setFilter(String filter) {
            this.filter = filter;
        }

        public List<Integer> getValue() {
            return value;
        }

        public void setValue(List<Integer> value) {
            this.value = value;
        }

        public int getType() {
            return type;
        }

        public void setType(int type) {
            this.type = type;
        }

        public int getCriteria() {
            return criteria;
        }

        public void setCriteria(int criteria) {
            this.criteria = criteria;
        }
    }
}

以这种方式进行操作意味着您可以通过将过滤器值更改为满足您需要的任何字符串来拥有所需的任何过滤器。