How to handle uncertain Json using Java Jersey -
i got question today fellow colleague. let's got json string one:
{people:{name:carlos}}
so got simple class handle json string, wich this:
@xmlrootelement class peoplehandler(){ public person people; }
it happens sometime json string provide list of persons, this:
{people:[{name:carlos}, {name:michel}]}
my question is: how can change peoplehandler class manage kind of inputs, there annotation can help?
note: main problem can receive of json string exampled here. class must able support both.
note 2: don't have control on input, given web service. know check json , build copy list whenever there single object, looking more elegant solution.
you can jsondeserialize annotaion , addition deserializer.
peoplehandler.java
public class peoplehandler { private list<person> people; @jsondeserialize(using = persondeserializer.class) public void setpeople(list<person> o) { people = o; } }
persondeserializer.java
public class persondeserializer extends jsondeserializer<list<person>> { @override public list<person> deserialize(jsonparser jp, deserializationcontext ctxt) throws ioexception, jsonprocessingexception { list<person> retval = new arraylist<person>(); if (jp.getcurrenttoken() == jsontoken.start_object) { retval.add(jp.readvalueas(person.class)); } else if (jp.getcurrenttoken() == jsontoken.start_array) { while (jp.nexttoken() == jsontoken.start_object) { retval.add(jp.readvalueas(person.class)); } } return retval; } }
Comments
Post a Comment