Json unmarshal在Spring期间的JsonMappingException

时间:2014-06-24 09:33:32

标签: java json spring jackson unmarshalling

这是我的POJO课程:

public class OrdineIngressi {

    private Integer spettacolo;
    private Integer settore;
    private Integer pv;
    private List<OrdineIngresso> ingressi=new ArrayList<OrdineIngresso>();

    public OrdineIngressi(Integer spettacolo, Integer settore, Integer pv,
            List<OrdineIngresso> ingressi) {
        super();
        this.spettacolo = spettacolo;
        this.settore = settore;
        this.pv = pv;
        this.ingressi = ingressi;
    }



    public OrdineIngressi() {
        super();
    }



    public Integer getSpettacolo() {
        return spettacolo;
    }
    public void setSpettacolo(Integer spettacolo) {
        this.spettacolo = spettacolo;
    }
    public Integer getSettore() {
        return settore;
    }
    public void setSettore(Integer settore) {
        this.settore = settore;
    }   
    public Integer getPv() {
        return pv;
    }
    public void setPv(Integer pv) {
        this.pv = pv;
    }
    public List<OrdineIngresso> getIngressi() {
        return ingressi;
    }
    public void setIngressi(List<OrdineIngresso> ingressi) {
        this.ingressi = ingressi;
    }



    public class OrdineIngresso {

        private Integer tipoingresso;
        private Integer abbonamento;
        private int numero;
        private Integer[] posti;

        public OrdineIngresso() {
            super();
        }



        public OrdineIngresso(Integer tipoingresso, Integer abbonamento,
                int numero, Integer[] posti) {
            super();
            this.tipoingresso = tipoingresso;
            this.abbonamento = abbonamento;
            this.numero = numero;
            this.posti = posti;
        }
        public Integer getTipoingresso() {
            return tipoingresso;
        }
        public void setTipoingresso(Integer tipoingresso) {
            this.tipoingresso = tipoingresso;
        }
        public Integer getAbbonamento() {
            return abbonamento;
        }
        public void setAbbonamento(Integer abbonamento) {
            this.abbonamento = abbonamento;
        }
        public Integer[] getPosti() {
            return posti;
        }
        public void setPosti(Integer[] posti) {
            this.posti = posti;
        }
        public int getNumero() {
            return numero;
        }
        public void setNumero(int numero) {
            this.numero = numero;
        }   


    }   

}

这是ajax输入:

{"spettacolo":1,"settore":1,"pv":1,"ingressi":[{"tipoingresso":1,"abbonamento":null,"numero":1,"posti":[]}]}

当Controller尝试解组json输入时,我得到了这个:

nested exception is org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class com.bean.OrdineIngressi$OrdineIngresso]: can not instantiate from JSON object (need to add/enable type information?)

为什么呢?有一个默认的构造函数!

1 个答案:

答案 0 :(得分:2)

你几乎就在那里,你只需要让你的内心课static

...
    public static class OrdineIngresso {
        private Integer tipoingresso;
        ...
    }
IIRC它与非args内部类构造函数确实不是非args这一事实有关,因此jackson没有一般方式来实例化这些非静态内部类。 / p>

干杯,