Java Jackson解析器:使用嵌套对象更新映射对象
我一直在利用Jackson JSON解析器来映射我的对象。在测试api时,我遇到了创建/更新包含嵌套对象的对象的问题 创建和更新主对象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); }
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更新对象的正确方法是什么?我是否缺少任何注释,以防止重复实例化嵌套对象。此问题的答案将有助于。。。