java - Is possible use the same POJO in two different serializations, customizing some properties? -
i want utilize same dto in cases need ignore properties , in other cases want utilize it, don't want duplicate object or custom serialization, exist way specify, if dto used on implementation ignore properties, , if dto used in other implementation don't ignore properties.
i'm using jackson serialize dto
public abstract class baseauditdto extends baseidentifiabledto { private static final long serialversionuid = -6010447982202996167l; @jsonignore private string createdby; @jsonignore private date createddate; @jsonignore private string updatedby; @jsonignore private date updateddate; //getters , setters }
basically need utilize in cases createdby , createddate in other cases don't need it.
thanks.
you can seek jackson
views:
"views" in context mean ability define subsets of logical properties (things accessed via getters or fields) serialize. views defined statically (using annotations), view utilize serialization chosen dynamically (per serialization).
edit think misunderstood question. can utilize views tricky , hard understand. can utilize mixin feature, much easier implement. assume have 2 pojo
classes:
class pojo1 extends baseauditdto { private string name; //getters, setters }
and
class pojo2 extends baseauditdto { private string description; //getters, setters }
now have create interface getters baseauditdto
class. can this:
interface baseauditdtoignorepropertiesmixin { @jsonignore string getcreatedby(); @jsonignore date getcreateddate(); @jsonignore string getupdatedby(); @jsonignore date getupdateddate(); }
as can see, above interface defines annotations methods exists in baseauditdto
class. now, have tell jackson
classes want ignore above properties. see below code:
objectmapper mapper = new objectmapper(); mapper.addmixinannotations(pojo1.class, baseauditdtoignorepropertiesmixin.class);
now, can test our classes:
pojo1 pojo1 = new pojo1(); pojo1.setcreatedby("me"); pojo1.setcreateddate(new date()); pojo1.setupdatedby("you"); pojo1.setupdateddate(new date()); pojo1.setid(1); pojo1.setname("name"); pojo2 pojo2 = new pojo2(); pojo2.setcreatedby("me"); pojo2.setcreateddate(new date()); pojo2.setupdatedby("you"); pojo2.setupdateddate(new date()); pojo2.setid(2); pojo2.setdescription("description"); system.out.println(mapper.writevalueasstring(pojo1)); system.out.println(mapper.writevalueasstring(pojo2));
above code prints:
{"id":1,"name":"name"} {"id":2,"createdby":"me","createddate":1403653155395,"updatedby":"you","updateddate":1403653155395,"description":"description"}
as can see, jackson
ignores baseauditdto
properties pojo1
class.
java json serialization jackson
No comments:
Post a Comment