怎麼用java物件表示複雜的json?
给我你的怀抱
给我你的怀抱 2017-05-17 10:08:15
0
2
632

有種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對象,可是完全偏離目標了,本來就只是一個輔助對象。有沒有什麼好的做法?

给我你的怀抱
给我你的怀抱

全部回覆(2)
滿天的星座

雖然並沒有太理解你的問題,不過針對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;
        }
    }
}
巴扎黑
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"}}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板