java - 处理不同的 JSON 请求 Jackson

标签 java spring-boot jackson

我正在一个项目中工作,我需要使用两种不同的格式向远程服务发送请求

格式 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.Listjava.lang.String) ?

最佳答案

我认为你有两个选择。

  1. 创建两个类和两个方法来调用远程服务,例如:

列表:

@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/

    相关文章:

    java - 关于排序算法概念的问题

    java - 在 JCheckBox 中有一个左右对齐的标签

    java - 基本身份验证 + JWT 与 Oauth2

    java - Google AppEngine JSONArrayProvider$App,无法实例化

    java - jackson 映射关系

    java - 为什么无限循环在加载数据时 hibernate

    java - 从 date 到 long 的转换在 java 和 postgresql 中是不一样的

    multithreading - 即使 server.tomcat.max-threads=5,Springboot 也会增加线程

    mysql - 如何获取Keycloak访问 token 并将其存储在数据库中以供Spring Boot使用?

    java - jackson 不忽略 json 数组中的空对象