我想通过使用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
。像上面的例子