0

他の TreeNode の配列である「children」と呼ばれるインスタンス変数 (とりわけ) を持つ「TreeNode」と呼ばれるクラスがある場合、1 つの JsonView で TreeNode インスタンスをシリアル化できますが、すべてをシリアル化する方法はありますか?別のJsonViewの下の「子」配列のTreeNodes?

私が達成しようとしているのは、単一の TreeNode をシリアル化するときに、その TreeNode 内のすべてのプロパティ (その子のリストを含む) をシリアル化することですが、子のすべてのプロパティをシリアル化する必要はありません。 (子の「子」配列など)。基本的に、TreeNode をシリアル化する場合、その TreeNode とその子を 1 レベル下に表示したいだけです。子には、「子」配列の一部としてシリアル化されている場合にのみ非表示にしたい他のプロパティもあります。

JsonViews または他の Jackson 機能でこれを達成する方法はありますか? ありがとう

4

1 に答える 1

3

カスタムのシリアライゼーション ロジックについては、独自の を実装する必要がありますJsonSerializer

例えば:

public class TreeNodeSerializer extends JsonSerializer<TreeNode> {

    @Override
    public void serialize(TreeNode value, JsonGenerator generator,
                          SerializerProvider provider) throws IOException,             JsonProcessingException {

        generator.writeStartObject();
        generator.writeStringField("value", value.getValue());
        generator.writeNumberField("numValue", value.getNumValue());

        generator.writeArrayFieldStart("children");
        for(TreeNode child : value.getChildren()) {
            generator.writeStringField("value", child.getValue());
            generator.writeNumberField("numValue", child.getNumValue());
        }
        generator.writeEndArray();

        generator.writeEndObject();
    }
}
于 2013-07-26T18:11:28.303 に答える