0

私には2つのクラスがあります:

public class Team {
    private Long id;
    private String name;
        ...
}
public class Event {
    private Long id;

    @ManyToOne
    private Team homeTeam;

    @ManyToOne
    private Team guestTeam;
...
}

コントローラ:

public @ResponseBody List<Event> getAll() {...
}

今私はJsonを持っています:

[{"id":1,"homeTeam":{"id":2,"name":"Golden State"},"guestTeam":{"id":1,"name":"Philadelphia"},...

私が欲しいもの:

[{"id":1,"homeTeam":"Golden State","guestTeam":"Philadelphia",...

完全なオブジェクトではなくチームの名前のみを出力するようにJacksonを指定するにはどうすればよいですか?

4

2 に答える 2

2

Benoitの答えは、目的の形式のJSONを生成せず、次のようなものを生成します。

[{"id":1,"homeTeam":{"name":"Golden State"},"guestTeam":{"name":"Philadelphia"},...  

代わりに、Teamクラスを次のように表示します。

public class Team {
    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

    @JsonValue
    public String getName() {
        return name;
    }

    ...
}

これにより、目的のJSONが生成されます。

[{"id":1,"homeTeam":"Golden State","guestTeam":"Philadelphia",...

ただし、逆シリアル化のために追加の処理が必要になる場合があります。

于 2013-03-03T05:48:37.157 に答える
0

Team使用を除くオブジェクトのすべてのプロパティを除外しますname:@JsonIgnoreProperties

@JsonIgnoreProperties
public String getPropertyToExclude() {
    return propertyToExclude;
}

ジャクソンがJSONのチーム名のみをシリアル化するようにします。

于 2013-03-03T00:05:22.917 に答える