【发布时间】:2021-05-20 04:16:25
【问题描述】:
我有两个 POJO:
@lombok.Value
public class Foo {
String foo;
Bar bar;
}
@lombok.Value
public class Bar {
String bar;
String baz;
}
我希望能够将以下内容反序列化为 Foo 实例:
{
"foo": "some foo",
"bar": "{ \"bar\": \"some bar\", \"baz\": \"some baz\" }"
}
如果我理解正确,这完全相反@JsonRawValue。在那里,它将 Java 字符串值(这是有效的 JSON 值)转换为 JSON 对象。但在这里,我需要将 JSON 字符串值转换为 Java 对象。
我怀疑我需要编写一个自定义的反序列化器,但我不确定它到底是怎么回事,因为它涉及解析原始 JSON 并将其分配给该字段。也许BeanDeserializerModifier? (我不知道如何使用它。)
我想保持对象不可变 (@Value),但如果它有助于解决问题,我可以放弃此要求。
谢谢。
【问题讨论】:
-
看看这个answer。如果您将
JSON有效负载作为String放入另一个JSON有效负载,则需要对其进行两次反序列化。首先在根级别,然后在转义级别。 -
这两个问题都是相关的,请检查它们。谢谢。