我正在一个项目中工作,我需要使用两种不同的格式向远程服务发送请求
格式 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;
}
getter 和 setter 将放在这里....
但是当我执行这个程序时。显然,我遇到了以下异常
com.fasterxml.jackson.databind.JsonMappingException: Multiple fields representing property
如何在一个 Json
POJO 中处理这两个不同版本的请求(java.util.List
与 java.lang.String
) ?
最佳答案
我认为你有两个选择。
- 创建两个类和两个方法来调用远程服务,例如:
列表:
@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;
}
- 使用 map
我更喜欢选项 1。
关于java - 处理不同的 JSON 请求 Jackson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59606018/