Comment utiliser des objets Java pour représenter du json complexe ?
给我你的怀抱
给我你的怀抱 2017-05-17 10:08:15
0
2
611

Il y a un objet json qui doit être beaucoup utilisé, donc je veux l'encapsuler dans un objet,

{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]}}

L'idée actuelle est d'avoir une couche d'objets, puis une autre couche d'objets d'info-bulle, d'axe x et de série, mais c'est complètement hors cible. Existe-t-il des bonnes pratiques ?

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

répondre à tous(2)
滿天的星座

Bien que je ne comprenne pas bien votre problème, c'est un peu ennuyeux d'écrire des classes pour json pour représenter la structure de ce json... Mais il existe un artefact qui peut vous aider à résoudre ce problème simplement, haha ​​​​

Il existe un artefact dans IDEA appelé GsonFormat

Ce plugin est très simple à utiliser pour traiter le json, peu importe la complexité du json, tant que le format json est correct, il générera automatiquement des classes pour vous, haha ​​​​

.

Les étapes d'utilisation générale sont les suivantes :

  1. Créez une nouvelle classe, par exemple, appelée Test. Cette classe est la dernière classe que vous utiliserez

.

  1. Puis Alt+s pour ouvrir la touche de raccourci GsonFormat

  1. Collez la chaîne json que vous souhaitez convertir et cliquez sur ok

4. Confirmez le format et le type après la conversion. Fondamentalement, la valeur par défaut est OK. Cliquez simplement sur ok

.

  1. Génération de classe :

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));
    }

}

Sortie :

{"tooltip":{"axisPointer":{"type":"cross"},"formatter":"{b}: {c})","trigger":"axis"}}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal