【发布时间】:2016-10-10 17:47:30
【问题描述】:
在 Java 中使用 Jackson json 库,是否可以执行以下操作:
public class MyObject {
@JsonRawValue
@JsonUnwrapped
private String rawJson;
}
public class DTO {
public MyObject json;
}
rawJson 示例:
{
"key": "value"
}
当 DTO 被序列化并呈现为 json 时,我希望 JSON 看起来像这样:
{
"dto": {
"key":"value"
}
}
相反,它总是:
{
"dto":{
"rawJson":{
"key":"value"
}
}
}
基本上,当您的属性之一是存储在带有@JsonRawValue 的字符串中的JSON 值时,@JsonUnwrapped 不起作用。
理想情况下,我正在寻找 MyObject 类而不是 DTO 级别的序列化解决方案,否则我必须将该解决方案不仅应用于 DTO,而且应用于引用 MyObject 的所有其他 DTO。
更新:
下面的答案在一个地方解决了这个问题,但在下面的场景中仍然是一个问题;
public class DTO2 {
@JsonUnwrapped
public MyObjectAbstract json2;
}
MyObject 是 MyObjectAbstract 的扩展,当 DTO2 MyObjectAbstract 是 MyObject 的一个实例时,我希望 DTO2 简单地序列化为:
{
"key": "value"
}
问题在于,只要 DTO2.MyObjectAbstract 是 MyObject 的一个实例,它就会像这样被序列化:
{
"json": {
"key": "value"
}
}
【问题讨论】:
标签: java json serialization jackson dto