1

特定のゲッターメソッドをシリアル化しないようにジャクソンに指示する最も簡単な方法は何ですか?私はカスタムの複雑なクラスを持っているので、1つのゲッターに明示的に言いたいだけです。すべてのセッターとゲッターは機能する必要がありますが、1つだけは機能しないはずです。

mapper.configure(SerializationConfig.Feature.AUTO_DETECT_GETTERS, true);

したがって、これは適切な方法ではありません。このクラスでゲッターを使用したくないことを伝える必要があります。

public static class EventRow implements Serializable, Cloneable, GRSerializable {
    public int x
    public int y
    public double z
    public String eventKeyValuesPacked; 

    //This getter should not be used, because there is no explicit setter
    //for    this, and also no public... And it is only unpack  
    //EventKeyValuesPacked so it would be multiple data...
    public KeyValue[] getEventKeyValues() {
       KeyValue[] kvs = DA_EventKey.unpackKeyValues(eventKeyValuesPacked);
       return kvs == null ? new KeyValue[0] : kvs;
   }
}

getterメソッドを非表示にするアノテーションまたはSerializationConfigオプションはありますか?getEventKeyValues()

4

5 に答える 5

2

ジャクソンに特定のゲッターメソッドをシリアル化しないように指示する最も簡単な方法は何ですか...アノテーションなしで?

カスタマーシリアライザーを作成せずに...

スキップするフィールド/プロパティ/ゲッター/セッターに直接注釈を付けることが望ましくない場合、別のアプローチは、ジャクソンミックスイン機能を利用することです。

シリアル化のさらに別のアプローチは、Jackson JSONビュー機能を利用することですが、これにもある程度の注釈が必要です。

于 2012-07-04T19:23:22.270 に答える
1

これには注釈があります:@JsonIgnore

@JsonIgnore
public KeyValue[] getEventKeyValues() {
...

このために注釈を使用したくない場合は、カスタムシリアライザーを作成する必要があります。

于 2012-07-04T15:07:30.290 に答える
0

objectMapper.configure(SerializationConfig.Feature.AUTO_DETECT_GETTERS、false);

于 2012-09-13T16:18:42.260 に答える
0

これはJacksonのバージョンに依存する可能性があります。1.9より前では、ゲッターとセッターは別々に処理されていたため、ゲッターの自動検出では不十分でした。しかし、1.9以降では、setter / getter / fieldはすべて論理プロパティに結合されます。これにより、Jacksonはsetterからプロパティの存在を推測できます。

したがって、おそらく行う必要があるのは、セッター検出も無効にすることです。すでに与えられている他のオプションも同様に機能します。これを行うための一般的な方法は、ミックスインアノテーションです。

于 2012-07-05T17:35:14.790 に答える
0

私はこれがほとんどそれを行うと思います:

objectMapper.configure(DeserializationConfig.FAIL_ON_UNKNOWN_PROPERTIES、false);

于 2012-07-04T15:18:30.803 に答える