【发布时间】:2023-03-18 21:30:01
【问题描述】:
Json 对象可以有字符串,而这些字符串可以代表另一个 Json 对象。例如:
{
"foo" : "foo",
"bar" : "{\"fizz\":\"baz\"}"
}
以上 JSON 作为 Java 字符串:
"{ \"foo\" : \"foo\", \"bar\" : \"{\\\"fizz\\\":\\\"baz\\\"}\"}"
假设上述结构,我如何让杰克逊将 bar 属性反序列化为另一个 POJO?例子?
class FooBar{
private String foo;
private FizzBazz bar;
}
class FizzBazz {
private String fizz;
}
【问题讨论】:
-
带注释的 bar 属性:@JsonDeserialize(convertor = FizzBazzConverter.class) 它的实现扩展了 StdConvertor
并仅使用另一个 objectMapper 将字符串转换为 FizzBazz。对于我的情况,它不是一个足够通用的解决方案。我可以将 bar 读取为字符串,然后将其映射到 FizzBazz,但希望 Jackson 一次性为我完成此操作。外部的 json 对象可能有很多这样的原始 json 字符串。 -
请用所有必需的课程更新您的实际问题。那么就很容易给你答案了。
标签: java json jackson jackson-databind