请问 这种json aggs这块 实体该怎么去设计

{
    "size":0,
  "aggs":{
      "groupDate": {
        "date_histogram": {
            "field": "ts",
              "min_doc_count": 0,
              " interval": "100ms",
              "offset":"-8h"
        },
      "aggs": {
              "average_of_value":{
                "avg": {
                    "field":"value"
                }
            }
      }
    }
  },
  "sort": [
    {
        "ts":{
            "order":"asc"
        }
    }
  ]
}

第二组 aggs 是跟 groupDate 评级

json在线解析可以了解一下,自动帮你转实体:https://www.sojson.com/json2entity.html

主要是通过控制器实现json数据的封装。aggs是一个对象,sort是一个数组,实体类可以一个,也可以多个,看业务。

==================================
package ;
public class Date_histogram
{
    private String field;

    private int min_doc_count;

    private String interval;

    private String offset;

    public void setField(String field){
        this.field = field;
    }
    public String getField(){
        return this.field;
    }
    public void setMin_doc_count(int min_doc_count){
        this.min_doc_count = min_doc_count;
    }
    public int getMin_doc_count(){
        return this.min_doc_count;
    }
    public void setInterval(String interval){
        this.interval = interval;
    }
    public String getInterval(){
        return this.interval;
    }
    public void setOffset(String offset){
        this.offset = offset;
    }
    public String getOffset(){
        return this.offset;
    }
}

==================================
package ;
public class Avg
{
    private String field;

    public void setField(String field){
        this.field = field;
    }
    public String getField(){
        return this.field;
    }
}

==================================
package ;
public class Average_of_value
{
    private Avg avg;

    public void setAvg(Avg avg){
        this.avg = avg;
    }
    public Avg getAvg(){
        return this.avg;
    }
}

==================================
package ;
public class Aggs
{
    private Average_of_value average_of_value;

    public void setAverage_of_value(Average_of_value average_of_value){
        this.average_of_value = average_of_value;
    }
    public Average_of_value getAverage_of_value(){
        return this.average_of_value;
    }
}

==================================
package ;
public class GroupDate
{
    private Date_histogram date_histogram;

    private Aggs aggs;

    public void setDate_histogram(Date_histogram date_histogram){
        this.date_histogram = date_histogram;
    }
    public Date_histogram getDate_histogram(){
        return this.date_histogram;
    }
    public void setAggs(Aggs aggs){
        this.aggs = aggs;
    }
    public Aggs getAggs(){
        return this.aggs;
    }
}

==================================
package ;
public class Aggs
{
    private GroupDate groupDate;

    public void setGroupDate(GroupDate groupDate){
        this.groupDate = groupDate;
    }
    public GroupDate getGroupDate(){
        return this.groupDate;
    }
}

==================================
package ;
public class Ts
{
    private String order;

    public void setOrder(String order){
        this.order = order;
    }
    public String getOrder(){
        return this.order;
    }
}

==================================
package ;
public class Sort
{
    private Ts ts;

    public void setTs(Ts ts){
        this.ts = ts;
    }
    public Ts getTs(){
        return this.ts;
    }
}

==================================
package ;
import java.util.ArrayList;
import java.util.List;
public class Root
{
    private int size;

    private Aggs aggs;

    private List<Sort> sort;

    public void setSize(int size){
        this.size = size;
    }
    public int getSize(){
        return this.size;
    }
    public void setAggs(Aggs aggs){
        this.aggs = aggs;
    }
    public Aggs getAggs(){
        return this.aggs;
    }
    public void setSort(List<Sort> sort){
        this.sort = sort;
    }
    public List<Sort> getSort(){
        return this.sort;
    }
}

 

再json中,K-V键值对的K对应的是实体类的属性名称,而不是属性类。因此只需要给外层Aggs和内层的Aggs对应的实体类取不同的名称就好。

使用GSON,可以将类自动转换成json。或者使用开发工具的GSONFORMAT插件,json自动生成实体类。

public class text2 {

    private int size;
    private AggsBean1 aggs;
    private List<SortBean> sort;


    public static class AggsBean1 {
        private GroupDateBean groupDate;

        public static class GroupDateBean {
            private DateHistogramBean date_histogram;
            private AggsBean2 aggs;


            public static class DateHistogramBean {
                private String field;
                private int min_doc_count;
                private String interval;
                private String offset;
            }


            public static class AggsBean2 {
                private AverageOfValueBean average_of_value;


                public static class AverageOfValueBean {
                    private AverageOfValueBean.AvgBean avg;


                    public static class AvgBean {
                        private String field;
                    }
                }
            }
        }
    }


    public static class SortBean {
        private TsBean ts;

        public static class TsBean {
            private String order;
        }
    }
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

csdn不是有现成的IDEA插件可以做这个事情:

https://plugin.csdn.net/idea.html

安装这个插件后,可以在IDEA上直接粘贴这段代码生成实体类。

通过CSDN插件生成的实体类代码为:

package net.csdn.idea;


/**
 * csdn
 */

public class Avg {

	private String field;


	public void setField (String field){
		this.field=field;
	}
	public String getField(){
		return field;
	}

}
=============================
package net.csdn.idea;

import net.csdn.idea.Aggs
import java.util.List

/**
 * csdn
 */

public class Test {

	private Aggs aggs;
	private Long size;
	private List<Sort> sort;


	public void setAggs (Aggs aggs){
		this.aggs=aggs;
	}
	public Aggs getAggs(){
		return aggs;
	}
	public void setSize (Long size){
		this.size=size;
	}
	public Long getSize(){
		return size;
	}
	public void setSort (List<Sort> sort){
		this.sort=sort;
	}
	public List<Sort> getSort(){
		return sort;
	}

}
=============================
package net.csdn.idea;
import net.csdn.idea.Avg

/**
 * csdn
 */

public class AverageOfValue {

	private Avg avg;


	public void setAvg (Avg avg){
		this.avg=avg;
	}
	public Avg getAvg(){
		return avg;
	}

}
=============================
package net.csdn.idea;


/**
 * csdn
 */

public class DateHistogram {

	private String field;
	private String interval;
	private Long minDocCount;
	private String offset;


	public void setField (String field){
		this.field=field;
	}
	public String getField(){
		return field;
	}
	public void setInterval (String interval){
		this.interval=interval;
	}
	public String getInterval(){
		return interval;
	}
	public void setMinDocCount (Long minDocCount){
		this.minDocCount=minDocCount;
	}
	public Long getMinDocCount(){
		return minDocCount;
	}
	public void setOffset (String offset){
		this.offset=offset;
	}
	public String getOffset(){
		return offset;
	}

}
=============================
package net.csdn.idea;
import net.csdn.idea.Ts

/**
 * csdn
 */

public class Sort {

	private Ts ts;


	public void setTs (Ts ts){
		this.ts=ts;
	}
	public Ts getTs(){
		return ts;
	}

}
=============================
package net.csdn.idea;
import net.csdn.idea.DateHistogram
import net.csdn.idea.Aggs

/**
 * csdn
 */

public class GroupDate {

	private Aggs aggs;
	private DateHistogram dateHistogram;


	public void setAggs (Aggs aggs){
		this.aggs=aggs;
	}
	public Aggs getAggs(){
		return aggs;
	}
	public void setDateHistogram (DateHistogram dateHistogram){
		this.dateHistogram=dateHistogram;
	}
	public DateHistogram getDateHistogram(){
		return dateHistogram;
	}

}
=============================
package net.csdn.idea;
import net.csdn.idea.AverageOfValue
import net.csdn.idea.GroupDate

/**
 * csdn
 */

public class Aggs {

	private AverageOfValue averageOfValue;
	private GroupDate groupDate;


	public void setAverageOfValue (AverageOfValue averageOfValue){
		this.averageOfValue=averageOfValue;
	}
	public AverageOfValue getAverageOfValue(){
		return averageOfValue;
	}
	public void setGroupDate (GroupDate groupDate){
		this.groupDate=groupDate;
	}
	public GroupDate getGroupDate(){
		return groupDate;
	}

}
=============================
package net.csdn.idea;


/**
 * csdn
 */

public class Ts {

	private String order;


	public void setOrder (String order){
		this.order=order;
	}
	public String getOrder(){
		return order;
	}

}