Java 对象到 JSON 的转换提供了 Java 构建器类中不存在的额外属性

问题描述 投票:0回答:1

我正在使用 ObjectMapper 将 Java 对象转换为 JSON,但它提供了我的 java 类中不存在的额外属性。

下面是 Java 对象生成器类。

@JsonDeserialize(builder = OrderSummary.Builder.class)
public class OrderSummary extends ABC {

    @JsonProperty("orderCode")
    private String orderCode;

    @JsonProperty("transactionAmount")
    private long transactionAmount;

    @JsonProperty("transactionCurrency")
    private String transactionCurrency;

    @JsonProperty("isPayout")
    private boolean isPayout;

    private OrderSummary(Builder builder) {
        super(builder);
        orderCode = builder.orderCode;
        transactionAmount = builder.transactionAmount;
        transactionCurrency = builder.transactionCurrency;
        isPayout = builder.isPayout;
    }
    public static Builder newBuilder() {
        return new Builder();
    }

    public String getOrderCode() {
        return orderCode;
    }
    public long getTransactionAmount() {
        return transactionAmount;
    }
    public String getTransactionCurrency() {
        return transactionCurrency;
    }
    public boolean isPayout() {
        return isPayout;
    }

    @JsonPOJOBuilder
    public static final class Builder extends ABC.Builder<Builder> {

        private String orderCode;

        private long transactionAmount;

        private String transactionCurrency;

        private boolean isPayout;

        private Builder() {
        }

        public Builder withOrderCode(String val) {
            orderCode = val;
            return this;
        }
        public Builder withTransactionAmount(long val) {
            transactionAmount = val;
            return this;
        }
        public Builder withTransactionCurrency(String val) {
            transactionCurrency = val;
            return this;
        }
        public Builder withIsPayout(boolean val) {
            isPayout = val;
            return this;
        }
        public OrderSummary build() {
            return new OrderSummary(this);
        }
        @Override
        protected Builder self() {
            return this;
        }
    }
}

它扩展了 1 个只有 2 个属性的类

  1. 交易代码
  2. 唯一标识符

但是当我使用 Object Mapper 对象转换为 json 时,低于 json

{
              "payout": false,
              "transactionCode": "ABCJD",
              "uniqueIdentifier": 78632,
              "orderCode": "12345",
              "transactionAmount": 1200,
              "transactionCurrency": "EUR",
              "isPayout": false,
}

我不确定

"payout": false,
是如何添加到 json 中的。

我尝试转换另一个没有

boolean
的 java 对象,它工作正常,没有任何问题。

您能帮我解决这个转换问题吗?

java json serialization jackson objectmapper
1个回答
0
投票

我不知道你所做的整个过程是什么,以及如何做的。

一些可能的解决方案

  1. 将此注释添加到序列化类中

    @JsonIgnoreProperties({"payout"})

  2. 使用google gson,它在所有软件工程术语中非常高效、非常安全并且非常好的序列化器。

© www.soinside.com 2019 - 2024. All rights reserved.