Java Jackson:仅序列化给定类的给定实例变量
请注意,序列化是指序列化为JSON(JsonNode或其字符串表示形式) 这是杰克逊2.2.3。我的班级是这样的: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
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数组),其中包含xBar
对象
如果您真的想要那个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;
}