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