EJay EJay - 1 month ago 11
Java Question

Can the property @JSONIgnore be set on a per call basis?

I am working on a site that uses promo codes to potentially provide users free memberships to the site. The level that a member signs up at is an attribute of a promo code object and stored in the database as an int, either 1 or 2. However, the only time the member level attribute is relevant to the UI of the site is for a landing page associated with a specific promo code. So for that case, I don't want the member level to be ignored by JSON. After a user returns to the site and has a promo code object associated with their account, we no longer care about their member level so I would like the member level attribute to be ignored by JSON.

So my question is this, is it possible to set an object's attribute to

@JSONIgnore
on a per access basis, or can an attribute only be ignored or not ignored? In other words is there a method like
object.getAttribute().setAttributeJSONIgnore(true | false)
?

Answer

No. Annotation-based approaches are static, since although you could use custom AnnotationIntrospector, resulting JsonSerializer instances are reused since their construction is costly.

But there are ways to filter out properties, check out "Filtering Properties" article, for example.

Comments