Java Jackson解析器:使用嵌套对象更新映射对象

Java Jackson解析器:使用嵌套对象更新映射对象,java,android,json,jackson,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); }

我一直在利用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更新对象的正确方法是什么?我是否缺少任何注释,以防止重复实例化嵌套对象。

此问题的答案将有助于。。。