我正在一个项目中,我需要使用两种不同格式向远程服务发送请求
格式1:
{
"templateId": "template1",
"configurationData": {
"inboundHeaders": [
{
"key": "header1",
"value": "value1"
}, {
"key": "header2",
"value": "value2"
}, {
"key": "header3",
"value": "value3"
}
],
"outboundHeaders": [
{
"key": "header4",
"value": "value4"
}, {
"key": "header5",
"value": "value5"
}, {
"key": "header6",
"value": "value6"
}
]
}
}
格式2
{
"templateId": "template1",
"configurationData": {
"inboundHeaders": "head1",
"outboundHeaders" : "head2,head3"
}
}
现在我已经创建了一个班级
@JsonPropertyOrder({ "inboundHeaders", "outboundHeaders"})
public class ConfigurationData {
@JsonProperty("inboundHeaders")
private List<Header> inboundHeaders = null;
@JsonIgnore
@JsonProperty("outboundHeaders")
private List<Header> outboundHeaders = null;
@JsonProperty("inboundHeaders")
private String inboundHeader = null;
@JsonProperty("outboundHeaders")
private String outboundHeader = null;
}
信件和二传手会去这里。...
但是当我执行此程序时。显然,我正在遵循以下异常,例如
com.fasterxml.jackson.databind.JsonMappingException:表示属性的多个字段
如何在一个java.util.List
POJO中处理这两种不同版本的请求[java.lang.String
与Json
?
我认为您有两个选择。
列表:
@JsonPropertyOrder({ "inboundHeaders", "outboundHeaders"})
public class ConfigurationDataLists {
@JsonProperty("inboundHeaders")
private List<Header> inboundHeaders = null;
@JsonIgnore
@JsonProperty("outboundHeaders")
private List<Header> outboundHeaders = null;
}
字符串:
@JsonPropertyOrder({ "inboundHeaders", "outboundHeaders"})
public class ConfigurationDataString {
@JsonProperty("inboundHeaders")
private String inboundHeader = null;
@JsonProperty("outboundHeaders")
private String outboundHeader = null;
}
我会选择选项1。
您不能像以前一样对不同的属性使用相同的名称。例如。 -inboundHeaders。
您必须更改属性名称之一。简单来说,您必须保持@ JsonProperty唯一。