1. ホーム
  2. java

[解決済み] クラスAは複数のJSONフィールドを宣言する

2023-07-02 09:35:31

質問

私はいくつかのプライベートフィールドを持つクラスAを持っており、同じクラスはクラスAにあるいくつかのプライベートフィールドを持つ別のクラスBを拡張しています。

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 にあるいくつかのプライベートファイルを持っています。

今、私は上記のクラス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のオブジェクトです

どのように解決するのですか?

プライベートフィールドであるため、json文字列を作成する際に問題はないはずです。

GSONはオブジェクトのプライベートフィールドを調べてシリアライズするので、スーパークラスのプライベートフィールドはすべて含まれますし、同じ名前のフィールドがあるとエラーになります。

もし、特定のフィールドを含めたくない場合は transient キーワードでマークする必要があります。

private transient BigDecimal tradeFeesPcy;