Java Jackson:仅序列化给定类的给定实例变量

Java Jackson:仅序列化给定类的给定实例变量,java,serialization,jackson,Java,Serialization,Jackson,请注意,序列化是指序列化为JSON(JsonNode或其字符串表示形式) 这是杰克逊2.2.3。我的班级是这样的: public final class Foo { // the one and only instance variable private final List<Bar> l; // Allows deserialization with no problem at all @JsonCreator public Foo(fi

请注意,序列化是指序列化为JSON(JsonNode或其字符串表示形式)

这是杰克逊2.2.3。我的班级是这样的:

public final class Foo
{
    // the one and only instance variable
    private final List<Bar> l;

    // Allows deserialization with no problem at all
    @JsonCreator
    public Foo(final List<Bar> l)
    {
        this.l = ImmutableList.copyOf(l);
    }
}
我想:

[ { "serializedForm": "of bar1"}, { "serializedForm": "of bar2"} ]
我如何做到这一点?注意:我可以使用jackson注释

还要注意,我可以将第二个表单完美地反序列化为有效的、功能性的
Foo
实例

{ "l": [ { "serializedForm": "of bar1"}, { serializedForm": "of bar2"} ] }
的正确序列化

public final class Foo
{
    // the one and only instance variable
    private final List<Bar> l;
}
公共最终课程Foo
{
//唯一的实例变量
私人最终名单l;
}
JSON是一个JSON对象,它包含一个名为
l
的JSON数组,该数组包含两个其他JSON对象。从Java的角度来看,这也是正确的。您有一个
Foo
对象,它包含一个名为
l
列表(对应于JSON数组),其中包含x
Bar
对象

如果您真的想要那个JSON,请使用注释注释字段的getter。仔细阅读javadoc,因为有一些限制。比如说

一个类中最多有一个方法可以使用此注释进行注释; 如果发现多个异常,则可能会引发异常


对不起,我不同意。我可以完美地将Bar的JSON数组反序列化为Foo。请参阅。@fge在您字段的getter上有一个解决方法
@JsonValue
。好的,但问题是,该字段没有getter:/@fge,您不能添加一个吗?我想它可以是私人的,一半在那里!我只讲了故事的一半。。。但是一个私人的getter是有效的。谢谢认可的
public final class Foo
{
    // the one and only instance variable
    private final List<Bar> l;
}