java - How to serialize a double-wrapped list? -
i have following class
public class someobject { @jsonproperty("otherobjects") private list<integer> otherobjects; }
and want serialize following xml
<someobject> <otherobjects> <objlist> <objref>123</objref> <objref>456</objref> <objref>789</objref> </objlist> </otherobjects> </someobject>
i tried create custom jsonserializer:
private static class objectlistserializer extends jsonserializer<list<integer>> { @override public void serialize(final list<integer> integers, final jsongenerator jsongenerator, final serializerprovider serializerprovider) throws ioexception, jsonprocessingexception { jsongenerator.writearrayfieldstart("objlist"); (integer integer : integers) { jsongenerator.writenumberfield("objref", integer); } jsongenerator.writeendarray(); } }
but jsongenerator
expects value , following exception:
exception in thread "main" com.fasterxml.jackson.core.jsongenerationexception: can not write field name, expecting value @ com.fasterxml.jackson.core.jsongenerator._reporterror(jsongenerator.java:1676) @ com.fasterxml.jackson.dataformat.xml.ser.toxmlgenerator.writefieldname(toxmlgenerator.java:444) @ com.fasterxml.jackson.core.jsongenerator.writearrayfieldstart(jsongenerator.java:1409) @ playground$objectlistserializer.serialize(playground.java:89) @ playground$objectlistserializer.serialize(playground.java:85) @ com.fasterxml.jackson.dataformat.xml.ser.xmlbeanpropertywriter.serializeasfield(xmlbeanpropertywriter.java:145) @ com.fasterxml.jackson.dataformat.xml.ser.xmlbeanserializerbase.serializefields(xmlbeanserializerbase.java:202) @ com.fasterxml.jackson.dataformat.xml.ser.xmlbeanserializer.serialize(xmlbeanserializer.java:119) @ com.fasterxml.jackson.dataformat.xml.ser.xmlserializerprovider.serializevalue(xmlserializerprovider.java:92) @ com.fasterxml.jackson.databind.objectmapper._configandwritevalue(objectmapper.java:3631) @ com.fasterxml.jackson.databind.objectmapper.writevalueasstring(objectmapper.java:2998) @ playground.main(playground.java:27) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ com.intellij.rt.execution.application.appmain.main(appmain.java:147)
how can resolve error?
Comments
Post a Comment