向JSON POJO添加包装,而不需要额外的Wrapper类



我想通过使用JSON多层包装的REST与另一个应用程序通信。例如:

我有以下POJO类:

@XmlRootElement
@AllArgsConstructor
@NoArgsConstructor
public class Message {
@Getter
@Setter
@XmlElement(name="meta")
private WrapperMeta metaParameters;

@Getter
@Setter
@XmlElement(name="message")
private WrapperMessage messageParameters;
}

包装器类:

@Getter
@Setter
@XmlElement(name="parameters")
private MetaParameters meta;
}

从它生成的JSON:

{
"meta": {
"parameters": {
"service": "some",
"sender": {
"id": "2",
"name": "Jane Doe"
}
}
},
"message": {
"parameters": {
"message": "hi"
"sent": 1630597537
}
}
}

我想去掉Wrapper类,取而代之的是一个更优雅的解决方案。

。,带有注释,如:

@XmlRootElement
@AllArgsConstructor
@NoArgsConstructor
public class Message {
@Getter
@Setter
@XmlElementWrapper(name="meta")
@XmlElement(name="parameters")
private MetaParameters metaParameters;

@Getter
@Setter
@XmlElementWrapper(name="message")
@XmlElement(name="parameters")
private MessageParameters message;
}

但是XmlElementWrapper注释似乎只是为XML添加包装,而不是JSON。

@XmlElement替换为@JsonProperty。像这样,

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class Message {
@JsonProperty("meta")
private WrapperMeta metaParameters;

@JsonProperty("message")
private WrapperMessage messageParameters;
}

像这样改变你的WrapperMessage

@Getter
@Setter
public class WrapperMessage {
@JsonUnwrapped
private MetaParameters meta;
}

注:可以在类级别中添加Getter@Setter。像上面的例子

相关内容

  • 没有找到相关文章

最新更新