首頁  >  問答  >  主體

怎麼用java物件表示複雜的json?

有種json物件要大量使用,所以想封裝成對象,

{tooltip : {
          trigger: 'axis',
          axisPointer: {type: 'cross',},
          formatter: "{b}: {c})"},
xAxis :{
      type : 'category',
      data : ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
      axisTick: {alignWithLabel: true}},
yAxis :{
      type : 'value'},
series :{
      type:'bar',
      barWidth: '80%',
      data:[10, 52, 200, 334, 390, 330, 220]}}

現在的想法是一層對象再套一層tooltip,xAxis,series對象,可是完全偏離目標了,本來就只是一個輔助對象。有沒有什麼好的做法?

给我你的怀抱给我你的怀抱2712 天前577

全部回覆(2)我來回復

  • 滿天的星座

    滿天的星座2017-05-17 10:10:15

    雖然並沒有太理解你的問題,不過針對json去寫一些類表示這個json的結構,是有點煩...不過有個神器可以幫你簡單解決這個問題,哈哈

    IDEA裡有個神器叫GsonFormat

    這個插件處理json十分好用,不管json有多複雜,只要json格式正確,自動幫你生成類,哈哈

    一般使用步驟是這樣的:

    1. 新建一個類,例如叫Test,這個類就是你最後要使用的類

    1. 然後Alt+s 開啟GsonFormat的快速鍵

    1. 把要轉換的json字串貼進去,點ok

    4.確認轉換後的格式和類型,基本預設都可以的,直接點ok即可

    1. 類生成:

    public class Test {
        /**
         * tooltip : {"trigger":"axis","axisPointer":{"type":"cross"},"formatter":"{b}: {c})"}
         * xAxis : {"type":"category","data":["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],"axisTick":{"alignWithLabel":true}}
         * yAxis : {"type":"value"}
         * series : {"type":"bar","barWidth":"80%","data":[10,52,200,334,390,330,220]}
         */
    
        private TooltipBean tooltip;
        private XAxisBean xAxis;
        private YAxisBean yAxis;
        private SeriesBean series;
    
        public TooltipBean getTooltip() {
            return tooltip;
        }
    
        public void setTooltip(TooltipBean tooltip) {
            this.tooltip = tooltip;
        }
    
        public XAxisBean getXAxis() {
            return xAxis;
        }
    
        public void setXAxis(XAxisBean xAxis) {
            this.xAxis = xAxis;
        }
    
        public YAxisBean getYAxis() {
            return yAxis;
        }
    
        public void setYAxis(YAxisBean yAxis) {
            this.yAxis = yAxis;
        }
    
        public SeriesBean getSeries() {
            return series;
        }
    
        public void setSeries(SeriesBean series) {
            this.series = series;
        }
    
        public static class TooltipBean {
            /**
             * trigger : axis
             * axisPointer : {"type":"cross"}
             * formatter : {b}: {c})
             */
    
            private String trigger;
            private AxisPointerBean axisPointer;
            private String formatter;
    
            public String getTrigger() {
                return trigger;
            }
    
            public void setTrigger(String trigger) {
                this.trigger = trigger;
            }
    
            public AxisPointerBean getAxisPointer() {
                return axisPointer;
            }
    
            public void setAxisPointer(AxisPointerBean axisPointer) {
                this.axisPointer = axisPointer;
            }
    
            public String getFormatter() {
                return formatter;
            }
    
            public void setFormatter(String formatter) {
                this.formatter = formatter;
            }
    
            public static class AxisPointerBean {
                /**
                 * type : cross
                 */
    
                private String type;
    
                public String getType() {
                    return type;
                }
    
                public void setType(String type) {
                    this.type = type;
                }
            }
        }
    
        public static class XAxisBean {
            /**
             * type : category
             * data : ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]
             * axisTick : {"alignWithLabel":true}
             */
    
            private String type;
            private AxisTickBean axisTick;
            private List<String> data;
    
            public String getType() {
                return type;
            }
    
            public void setType(String type) {
                this.type = type;
            }
    
            public AxisTickBean getAxisTick() {
                return axisTick;
            }
    
            public void setAxisTick(AxisTickBean axisTick) {
                this.axisTick = axisTick;
            }
    
            public List<String> getData() {
                return data;
            }
    
            public void setData(List<String> data) {
                this.data = data;
            }
    
            public static class AxisTickBean {
                /**
                 * alignWithLabel : true
                 */
    
                private boolean alignWithLabel;
    
                public boolean isAlignWithLabel() {
                    return alignWithLabel;
                }
    
                public void setAlignWithLabel(boolean alignWithLabel) {
                    this.alignWithLabel = alignWithLabel;
                }
            }
        }
    
        public static class YAxisBean {
            /**
             * type : value
             */
    
            private String type;
    
            public String getType() {
                return type;
            }
    
            public void setType(String type) {
                this.type = type;
            }
        }
    
        public static class SeriesBean {
            /**
             * type : bar
             * barWidth : 80%
             * data : [10,52,200,334,390,330,220]
             */
    
            private String type;
            private String barWidth;
            private List<Integer> data;
    
            public String getType() {
                return type;
            }
    
            public void setType(String type) {
                this.type = type;
            }
    
            public String getBarWidth() {
                return barWidth;
            }
    
            public void setBarWidth(String barWidth) {
                this.barWidth = barWidth;
            }
    
            public List<Integer> getData() {
                return data;
            }
    
            public void setData(List<Integer> data) {
                this.data = data;
            }
        }
    }

    回覆
    0
  • 巴扎黑

    巴扎黑2017-05-17 10:10:15

    import java.util.HashMap;
    import java.util.Map;
    
    import com.alibaba.fastjson.JSON;
    
    public class MM {
        class Tooltip {
            private String trigger;
            private Map<String, String> axisPointer;
            private String formatter;
            public String getTrigger() {
                return trigger;
            }
            public void setTrigger(String trigger) {
                this.trigger = trigger;
            }
            public Map<String, String> getAxisPointer() {
                return axisPointer;
            }
            public void setAxisPointer(Map<String, String> axisPointer) {
                this.axisPointer = axisPointer;
            }
            public String getFormatter() {
                return formatter;
            }
            public void setFormatter(String formatter) {
                this.formatter = formatter;
            }
        }
    
        public static void main(String[] args) {
            MM mm = new MM();
            Tooltip tooltip = mm.new Tooltip();
            tooltip.setTrigger("axis");
            tooltip.setAxisPointer(new HashMap<String, String>(){{
                this.put("type", "cross");
            }});
            tooltip.setFormatter("{b}: {c})");
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("tooltip", tooltip);
            
            System.out.println(JSON.toJSONString(map));
        }
    
    }

    輸出:

    {"tooltip":{"axisPointer":{"type":"cross"},"formatter":"{b}: {c})","trigger":"axis"}}

    回覆
    0
  • 取消回覆