2014-11-09 19 views
6

Java web uygulamamı servlet tabanlı JAX-RS'ye taşıyorum. Jboss kullanıyorum beri de (varsayılan olarak) RESTEasy kullanacağız.RESTEasy + Jackson: Yanıttaki alanları nasıl hariç tutabilirsiniz?

Sunumlarımda JSON'u serileştirmek/serpiştirmek için Jackson'ı kullanırım; Jackson beni örneğin alanların içerme/dışlama, programlama yoluyla filtre sağlar:

ObjectMapper mapper = new ObjectMapper().setVisibility(JsonMethod.FIELD, 
Visibility.ANY); 

String[] ignorableFieldNames = { "id", "name" }; 

FilterProvider filters = new SimpleFilterProvider(). 
addFilter("f123",SimpleBeanPropertyFilter.serializeAllExcept(ignorableFieldNames)); 

mapper.filteredWriter(filters).writeValueAsString(object); 

RESTEasy Jackson destek sağlar, ancak bu yüzden düşüğe almanız mümkün değilim o geliştirici şeffaf gömülü olduğu görünüyor alanları dahil etmek/hariç tutmak için. Bu uygun mu?

+1

olası yinelenen [ekleyip json yanıt için bir alan görmezden Nasıl] (http://stackoverflow.com/questions/8892937/how-to-add-and-ignore-a -alan-json-yanıtı) –

+0

@ruffp benzer, ama tam olarak değil. –

cevap

8

Deklaratif olarak hemen hemen her şeyi yapılandırmak için Jackson annotations'u kullanabilirsiniz. Sizin durumunuzda, @JsonIgnore yeterli olmalıdır.

Bu alanları her zaman yok saymak istemiyorsanız JSON views'u kullanabilirsiniz.

hala sen ObjectMapper erişmesi gereken bulursanız mix-ins have you covered.

(bir üçüncü taraf kitaplığında çünkü, diyelim ki) Ve söz konusu sınıfın kodunu değiştirmek yapamıyorsanız: Accessing Jackson Object Mapper in RestEasy .

Ayrıca bakınız: http://wiki.fasterxml.com/JacksonAnnotations

ait
+0

teşekkürler, "RestEasy'deki Jackson Object Mapper'a Erişme" işaretçisi hile yaptı – ps0604

İlgili konular