java - 使用 Jackson 1.9 解析 json 时出现问题

标签 java json class jackson

我以前用过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}"

现在我尝试了 jackson :

代码片段:

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 中我只需要两行就可以完美地工作。

所以我想我必须添加一些东西以便 jackson 识别

最佳答案

请确保您拥有:

  • 每个参数的 geters/setter
  • 空(或任何)承包商

通过

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

应该可以

作为旁注:

GsonJackson ArrayList 时使用 LinkedLIst,因此从代码 Gson 无法转换 Passes

关于java - 使用 Jackson 1.9 解析 json 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19195146/

相关文章:

json - Linux 将表从 bash 命令转换为 json

java - 从父类访问变量

javascript - 从数组值创建 JavaScript 对象

c++ - c++类成员函数的前向定义

c++ - 与 std::list 一起使用的指针上的接口(interface)类型转换的多重继承

java - 设置 RGB 值以减少 PNG 图像中的调色板

java - 比较不透明或事务性 Kafka spout

java - JPA 2.0 悲观锁测试方式

java - if 语句表现不同

json - 使用 Nifi 将 JSON 拆分为两个单独的 JSON 对象