0
我有一個串行的型號,像這樣:串行產生一個NullPointerException由於懶惰加入EBean
@Override
public void serialize(MyModel model, JsonGenerator generator, SerializerProvider serializer) throws IOException,JsonProcessingException {
if (model == null) return;
SimpleDateFormat en = new SimpleDateFormat("yyyy-MM-dd");
generator.writeStartObject();
generator.writeNumberField("id", model.id);
generator.writeStringField("name", model.name);
generator.writeStringField("display", model.toString());
SubModel subModel = model.subModel;
// HERE IT IS :
subModel.refresh(); // required to not have a nullpointerexception
// If I don't do that, the subModel.xxxx will throw a NullPointerException
// If I log the content :
Logger.info(String.valueOf(subModel));
// It will work (display the toString()) AND the following won't throw a NullPointerException
generator.writeObjectFieldStart("quotas");
generator.writeNumberField("id", subModel.id);
generator.writeStringField("display", subModel.toString());
generator.writeEndObject();
generator.writeEndObject();
generator.close();
}
爲什麼?有沒有辦法避免必須致電refresh()
或其他東西?
感謝您的幫助。順便說一下,是否有可能在序列化程序中使用序列化程序:在我的情況下,我想列出model
的所有屬性,但我只想列出subModel的一部分。這個Serializer的目標。但據我所知,我添加了列出所有屬性並將它們添加到生成器(第9行 - > 11)。是否可以通過添加子模型(ManyToOne關係)來序列化模型的所有直接屬性,而不在關係上使用@JsonIgnore?
感謝您的第二個幫助;)
完美!有效。我嘗試了它,而不改變公共 - >私人的變種,它沒有奏效。但如果它被設置爲私人的,它就像一個魅力。謝謝! – 2012-08-11 11:38:25