47

Jackson を使用して JSON にマップしたい User クラスがあります。

public class User {
    private String name;
    private int age;
    prviate int securityCode;

    // getters and setters
}

- を使用して、これを JSON 文字列にマップします。

User user = getUserFromDatabase();

ObjectMapper mapper = new ObjectMapper();   
String json =  mapper.writeValueAsString(user);

securityCode変数をマップしたくありません。このフィールドを無視するようにマッパーを構成する方法はありますか?

カスタム データ マッパーを作成したり、ストリーミング API を使用したりできることはわかっていますが、構成によってそれが可能かどうか知りたいですか?

4

8 に答える 8

76

次の 2 つのオプションがあります。

  1. Jackson は、フィールドのセッター - ゲッターに取り組んでいます。したがって、JSON で省略したいフィールドの getter を削除するだけです。(他の場所でゲッターが必要ない場合。)

  2. @JsonIgnore または、そのフィールドの getter メソッドで Jackson の注釈を使用すると、結果の JSON にそのようなキーと値のペアがないことがわかります。

    @JsonIgnore
    public int getSecurityCode(){
       return securityCode;
    }
    
于 2013-02-05T13:44:11.470 に答える
18

注釈クラスのすべてのプロパティを収集することもできます

@JsonIgnoreProperties( { "applications" })
public MyClass ...

String applications;
于 2013-12-09T14:59:04.220 に答える
6

Pojoに注釈を付けたくない場合は、Gensonを使用することもできます

注釈なしでフィールドを除外する方法は次のとおりです(必要に応じて注釈を使用することもできますが、選択できます)。

Genson genson = new Genson.Builder().exclude("securityCode", User.class).create();
// and then
String json = genson.serialize(user);
于 2013-02-05T14:09:35.053 に答える