Jackson 2.0 では、JAX-RS リソースを@JsonView
.
次の例は、リソース応答で人の年齢を無視する方法を示しています。残念ながら、すべての JAX-RS メソッドには で注釈を付ける必要があり@JsonView
ます。
public class View {
public static class Public {}
public static class Private {}
}
public class People {
@JsonView(View.Public) String name;
@JsonView(View.Private) int age;
}
@Path("/people")
public class PeopleResource {
@GET
@JsonView(View.Public)
public List<People> get() {
return peoples.get();
}
@GET
@Path("/id")
@JsonView(View.Public)
public People get(@PathParam("id") int id) {
return people.get(id);
}
}
アプリケーション リソースをグローバルにフィルター処理する唯一の方法は、MixIn を使用することです。
public class PeopleMixIn {
@JsonIgnore int age;
}
@Provider
public class ObjectMapperProvider implements ContextResolver<ObjectMapper> {
private ObjectMapper mapper = new ObjectMapper();
public ObjectMapperProvider() {
mapper.addMixInAnnotations(People.class, PeopleMixIn.class);
}
public ObjectMapper getContext(Class<?> type) { return mapper; }
}
Jackson の ObjectMapper を JsonView で構成する方法はありますか? または、リソース/アプリケーションのすべてのメソッドにフィルターを適用しますか?