Jackson Parser:使用嵌套对象更新映射对象

时间:2015-03-09 04:48:41

标签: java android json jackson

我一直在利用Jackson JSON解析器来绘制我的对象。在测试api时,我遇到了创建/更新包含嵌套对象的对象的问题。

创建和更新主对象

Airplane plane = airplanes.get(planeId);
if(plane == null){
    plane = mapper.readValue(jsonNode, Airplane.class)
}else{
    mapper.readerForUpdating(plane).readValue(jsonNode);
}

对象示例:

public class Airplane {
    private static final String TAG = "Airplane Model";

    @JsonProperty("id")
    private String mId;

    @JsonProperty("company")
    private String mCompany;

    @JsonProperty("pilot")
    private Pilot mPilot;

    @JsonProperty("passenger")
    private Passenger mPassenger;

    public Airplane() {

    }
}

public class Pilot {
    private static final String TAG = "Pilot Model";

    @JsonProperty("id")
    private String mId;

    @JsonProperty("name")
    private String mName;

    public Pilot() {
      //keeps getting called on airplane reader update
    }
}

所有内容都正确映射,但问题是每次更新飞机对象时,它都会在Pilot()构造函数中创建一个新的“Pilot”嵌套对象。这成为一个更大的问题,因为飞机模型正在以较小的时间间隔由Web套接字更新(不必要的对象实例化)。另外,我在Pilot对象中设置了非映射字段,这些字段由于每次更新时都会创建一个新的Pilot对象而丢失。

使用嵌套对象通过Jackson更新对象的正确方法是什么?我是否缺少任何注释以防止重复实例化我的嵌套对象。

0 个答案:

没有答案