1

我以前用过 Gson,一切正常,但是太慢了。

这是Json:

"{"Info":[{"par1":3456,"par2":4500,"par3":0,"items":{"parx":2354,"pary":456456,"parz":"worker"}}
    ,{"par1":34456,"par2":4300,"par3":1,"items":{"parx":5677,"pary":78456,"parz":"member"}},
    ],"par4":343434,"duplicateItemIdList":null,"errorState":null}"

现在我尝试了杰克逊:

代码片段:

ObjectMapper mapper = new ObjectMapper();
Passes mj = mapper.readValue(str, Passes.class);

public class Passes {
    public ArrayList<Info> info;   

.... }

@JsonIgnoreProperties(ignoreUnknown = true)    
class Info {

        public String par1 = "";
        public String par2 = "";
        public String par3 = "";
        public String par4 = "";   

        Items items = new Items();    
}

class Items{           
        public String parx = "";
        public String pary = "";
        public String parz = "";
}

问题是它没有填满班级items。parx、pary、parz 等

items是唯一的问题。其余的工作正常。

我的结构必须正确,因为在 Gson 中我只需要两条线就可以完美运行。

所以我想我必须添加一些东西让杰克逊认出

4

1 回答 1

1

确保您拥有:

  • 每个参数的获取器/设置器
  • 空的(或任何)承包商

通行证

@JsonIgnoreProperties(ignoreUnknown = true)
public class Passes {
    private List<Info> info;  

    public Passes() {
        // TODO Auto-generated constructor stub
    }

    public List<Info> getInfo() {
        return info;
    }

    public void setInfo(List<Info> info) {
        this.info = info;
    }
}

信息

@JsonIgnoreProperties(ignoreUnknown = true)    
public  class Info {

    private int par1;
    private int par2;
    private int par3;
    private int par4;

    //private Items items;    

    public Info() {
        // TODO Auto-generated constructor stub
    }

    public int getPar1() {
        return par1;
    }

    public void setPar1(int par1) {
        this.par1 = par1;
    }

    public int getPar2() {
        return par2;
    }

    public void setPar2(int par2) {
        this.par2 = par2;
    }

    public int getPar3() {
        return par3;
    }

    public void setPar3(int par3) {
        this.par3 = par3;
    }

    public int getPar4() {
        return par4;
    }

    public void setPar4(int par4) {
        this.par4 = par4;
    }
}

项目

public class Items{           
    private int parx;
    private int pary;
    private String parz;

    public Items() {
        // TODO Auto-generated constructor stub
    }

    public int getParx() {
        return parx;
    }

    public void setParx(int parx) {
        this.parx = parx;
    }

    public int getPary() {
        return pary;
    }

    public void setPary(int pary) {
        this.pary = pary;
    }

    public String getParz() {
        return parz;
    }

    public void setParz(String parz) {
        this.parz = parz;
    }
}

它应该工作

作为旁注

GsonLinkedLIst因此,当Jackson ArrayList您的代码Gson无法转换Passes类时使用

于 2013-10-05T08:07:03.663 回答