gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:08 25 4
gpt4 key购买 nike

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

这是 jackson 2.2.3。我的类(class)如下所示:

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);
}
}

我已经知道如何序列化所有 Bar 实例(已测试)。现在我需要能够序列化 Foo 实例。

目前我唯一能做的就是用 @JsonSerialize 注释“装饰”l,但这给出了:

{ "l": [ { "serializedForm": "of bar1"}, { "serializedForm": "of bar2"} ] }

我想要:

[ { "serializedForm": "of bar1"}, { "serializedForm": "of bar2"} ]

我该如何实现这一目标?注意:我可以使用 jackson-annotations

另请注意,我可以完美地将第二种形式反序列化为有效的、功能性的 Foo 实例。

最佳答案

这个

{ "l": [ { "serializedForm": "of bar1"}, { serializedForm": "of bar2"} ] }

的正确序列化
public final class Foo
{
// the one and only instance variable
private final List<Bar> l;
}

JSON 是一个 JSON 对象,其中包含一个名为 l 的 JSON 数组,该数组包含另外两个 JSON 对象。从Java的角度来看,这也是事实。您有一个 Foo 对象,其中包含一个名为 lList(对应于 JSON 数组),其中包含 x 个 Bar 对象。

如果您确实想要该 JSON,请使用 @JsonValue 注释您的字段的 getter 。仔细阅读 javadoc,因为有限制。例如

At most one method of a Class can be annotated with this annotation; if more than one is found, an exception may be thrown.

关于java - Jackson:仅序列化给定类的给定实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21805311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com