一尘不染

类A声明多个JSON字段

json

我有一个类A,其中包含一些私有字段,而同一类扩展了另一个类B,它也具有一些在A类中的私有字段。

public class A extends B {
    private BigDecimal netAmountTcy;
    private BigDecimal netAmountPcy;   
    private BigDecimal priceTo;  
    private String segment;

    private BigDecimal taxAmountTcy;
    private BigDecimal taxAmountPcy;   
    private BigDecimal tradeFeesTcy;
    private BigDecimal tradeFeesPcy;

// getter and setter for the above fields

}

B班有一些私人课

现在,当我尝试从上述类A创建JSON字符串时,出现以下异常:

class com.hexgen.ro.request.A declares multiple JSON fields named netAmountPcy

如何解决这个问题?

由于它们是私有字段,所以我猜创建json字符串时应该没有任何问题,但我不确定。

我创建如下的json字符串:

Gson gson = new Gson();
 tempJSON = gson.toJson(obj);

这里obj是A类的对象


阅读 223

收藏
2020-07-27

共1个答案

一尘不染

由于它们是私有字段,因此在创建json字符串时应该没有任何问题

我认为这句话是不对的,GSON在序列化时会查看对象的私有字段,这意味着包括了超类的所有私有字段,并且当您使用相同名称的字段时,它将引发错误。

如果您不想包含任何特定字段,则必须用transient关键字标记它,例如:

private transient BigDecimal tradeFeesPcy;
2020-07-27