2

问题出在serialize方法上(请参阅我的问题的代码部分)。一切看起来都很好,直到我的ComplexGraph班级扩大到二十到三十个领域。当ComplexGraph成为一个真正复杂的图时,通过jsonGenerator.writeNumberField("id", id).

问题:如何在serialize方法中调用标准序列化?喜欢:

public class ComplexGraph implements JsonSerializable {
    public void serialize(JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
        if (isPrivate) return;
        //HERE IS THE QUESTION
        else jsonGenerator.standardSerialization(this);
    }
}

代码:

public class ComplexGraph implements JsonSerializable {

    private int id;
    private String text;
    private boolean isPrivate;

    // getters and setters

    @Override
    public void serialize(JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
        if (isPrivate) return;
        jsonGenerator.writeStartObject();
        //IT'S VERY UGLY WHEN complexGraph HAS MANY DEPENDENCIES!
        jsonGenerator.writeNumberField("id", id);
        jsonGenerator.writeStringField("text", text);
        jsonGenerator.writeEndObject();
    }

    @Override
    public void serializeWithType(JsonGenerator jsonGenerator, SerializerProvider serializerProvider, TypeSerializer typeSerializer) throws IOException, JsonProcessingException {
        serialize(jsonGenerator, serializerProvider);
    }
}
4

0 回答 0