Java 如何将两个相同的json属性名分配给两个单独的字段

Java 如何将两个相同的json属性名分配给两个单独的字段,java,json,spring-boot,jackson,Java,Json,Spring Boot,Jackson,我有以下Java类 我需要按以下方式将其序列化为json: 如果列表(paymentTransactionReport字段)不为空,则显示其值- { "paymentTransactionResponse" : [ {}, {} ] } 如果列表为空,我需要在json字段中显示名为“paymentTransactionResponse”的paymentTransactionReportError,如前一个示例所示。范例- { "payment

我有以下Java类

我需要按以下方式将其序列化为json:

如果列表(paymentTransactionReport字段)不为空,则显示其值-

{ 
"paymentTransactionResponse" : [
    {},
    {}
  ]
}
如果列表为空,我需要在json字段中显示名为“paymentTransactionResponse”的paymentTransactionReportError,如前一个示例所示。范例-

{
"paymentTransactionResponse" : {
----
//fields from PaymentTransactionReportError class
----
  }
}
我怎样才能做到这一点?最好没有自定义序列化程序。
如果只使用两个注释@JsonProperty,它们的名称和JsonInclude.NON_NULL与我一样,那么我有一个错误:没有找到类型为的返回值的转换器:。。。这似乎是序列化过程中发生的一个错误,因为字段具有相同的名称

public class TestDTO {

@JsonIgnore
List<String> paymentTransactionResponse;

@JsonIgnore
String paymentTransactionResponseError;

public List<String> getPaymentTransactionResponse() {
    return paymentTransactionResponse;
}

public void setPaymentTransactionResponse(List<String> paymentTransactionResponse) {
    this.paymentTransactionResponse = paymentTransactionResponse;
}

public String getPaymentTransactionResponseError() {
    return paymentTransactionResponseError;
}

public void setPaymentTransactionResponseError(String paymentTransactionResponseError) {
    this.paymentTransactionResponseError = paymentTransactionResponseError;
}

@JsonAnyGetter
public Map<String, Object> getData(){
    Map<String, Object> map = new HashMap<String, Object>();
    if(paymentTransactionResponse != null) {
        map.put("paymentTransactionResponse", paymentTransactionResponse);
    }else {
        map.put("paymentTransactionResponse", paymentTransactionResponseError);
    }
    return map;
}}
公共类TestDTO{
@杰索尼奥雷
列出paymentTransactionResponse;
@杰索尼奥雷
字符串paymentTransactionResponseError;
公共列表getPaymentTransactionResponse(){
返回paymentTransactionResponse;
}
public void setPaymentTransactionResponse(列表paymentTransactionResponse){
this.paymentTransactionResponse=paymentTransactionResponse;
}
公共字符串getPaymentTransactionResponseError(){
返回paymentTransactionResponseError;
}
public void setPaymentTransactionResponseError(字符串paymentTransactionResponseError){
this.paymentTransactionResponseError=paymentTransactionResponseError;
}
@JsonAnyGetter
公共地图getData(){
Map Map=newhashmap();
if(paymentTransactionResponse!=null){
map.put(“paymentTransactionResponse”,paymentTransactionResponse);
}否则{
map.put(“paymentTransactionResponse”,paymentTransactionResponseError);
}
返回图;
}}

为什么不想使用自定义反序列化程序?我认为这将是一个合适的解决方案。@Smile,我并没有说我不想使用它们:)只是想找到更简单的方法来实现这一点。谢谢,它很有效!非常感谢。我想我会用你的解决方案