【发布时间】:2017-11-06 09:04:18
【问题描述】:
我有一个这样的请求
{
"varA" : "A",
"varB" : "TCFNhbiBKb3NlMRgwFgYDVQQK"
}
其中 key varB 是一个 base64 编码的 JSON 字符串。像这样:
{
"nestedVarB1": "some value here",
"nestedVarB2" : "some other value here"
}
我想把它转换成一些这样的 POJO:
@Data
public class MyRequest {
private String varA;
private B varB;
}
@Data
public class B {
private String nestedVarB1;
private String nestedVarB2;
}
我经历了几种堆栈溢出的解决方案,例如 this 和 this,但我想将 JSON 直接转换为 MyRequest 类型的对象,也许可以通过编写某种 Jackson 反序列化器。
如何使用 Jackson 和 Spring Boot 将 JSON 直接转换为 MyRequest?
注意:
- POJO
MyRequest和B非常大,B可以进一步嵌套,因此手动操作将是一项艰巨的任务。 - 我无法控制发出的请求,它来自第三方来源。因此,无法更改请求的格式。
【问题讨论】:
-
您是正确的,您需要编写自己的反序列化器并使用杰克逊注释
@JsonDeserialize(using = foodeserilizer.class)注册它。 -
您能否建议我应该如何编写一个自定义反序列化器,它只解码 base64 编码的 JSON,然后使用默认的反序列化器?我找到了答案here,但是我应该如何要求默认反序列化器将解码后的字符串视为对象其余部分的 JSON?
标签: java json spring-mvc spring-boot jackson