I have both examples there. Ralph
On Apr 1, 2014, at 1:57 PM, Matt Sicker <[email protected]> wrote: > Is that for the XML or JSON mapping? > > > On 1 April 2014 15:55, Ralph Goers <[email protected]> wrote: > Also, with Jackson you only have to annotate things where the normal mapping > doesn’t do what you want. For example, by default everything will be an > element. You need to annotate it if you want it to be an attribute. > > > On Apr 1, 2014, at 1:52 PM, Ralph Goers <[email protected]> wrote: > >> Oops - For XML the serialization is >> >> public void serialize(OutputStream stream) { >> try { >> final XmlMapper mapper = new XmlMapper(); >> mapper.writeValue(stream, this); >> } catch (Exception ex) { >> ex.printStackTrace(); >> } >> } >> >> >> On Apr 1, 2014, at 1:49 PM, Ralph Goers <[email protected]> wrote: >> >>> I just did this the other day for both XML and JSON. >>> >>> For XML I did: >>> >>> public static TransactionRequest deserialize(String xmlFile) { >>> try { >>> XmlMapper mapper = new XmlMapper(); >>> InputStream stream = new FileInputStream(xmlFile); >>> return mapper.readValue(stream, TransactionRequest.class); >>> } catch (Exception ex) { >>> ex.printStackTrace(); >>> } >>> return null; >>> } >>> public static TransactionRequest deserialize(String xmlFile) { >>> try { >>> XmlMapper mapper = new XmlMapper(); >>> InputStream stream = new FileInputStream(xmlFile); >>> return mapper.readValue(stream, TransactionRequest.class); >>> } catch (Exception ex) { >>> ex.printStackTrace(); >>> } >>> return null; >>> } >>> >>> Where needed I used things like: >>> >>> @JacksonXmlProperty(localName = "return") >>> private PostSale creditCardReturn; >>> >>> and >>> >>> @JacksonXmlProperty(isAttribute = true) >>> >>> For JSON I did >>> >>> public static JSONRequest deserialize(String json) >>> { >>> try >>> { >>> ObjectMapper mapper = new ObjectMapper(); >>> return mapper.readValue(json, JSONRequest.class); >>> } >>> catch (Exception ex) >>> { >>> ex.printStackTrace(); >>> } >>> return null; >>> } >>> >>> and >>> >>> public String serialize() >>> { >>> try >>> { >>> final ObjectMapper mapper = new ObjectMapper(); >>> return mapper.writeValueAsString(this); >>> } >>> catch (Exception ex) >>> { >>> ex.printStackTrace(); >>> } >>> return null; >>> } >>> >>> HTH, >>> >>> Ralph >>> >>> >>> On Apr 1, 2014, at 1:05 PM, Gary Gregory <[email protected]> wrote: >>> >>>> Well... so much for Jackson making my life easy. Jackson says it >>>> "supports" JAXB annotations but that must be only for the simplest cases. >>>> Jackson does not work with the JAXB annotations I used on Log4jLogEvents. >>>> This suppose this is not surprising. Back to the drawing board... >>>> >>>> Gary >>>> >>>> >>>> On Tue, Apr 1, 2014 at 12:05 PM, Gary Gregory <[email protected]> >>>> wrote: >>>> All good ideas, thank you. The JSON API I know best is GSON, which let's >>>> you listen to objects opening and closing. Maybe Jackson has something >>>> like that... I'll have to dig in. >>>> >>>> Gary >>>> >>>> >>>> On Tue, Apr 1, 2014 at 11:14 AM, Ralph Goers <[email protected]> >>>> wrote: >>>> So you are hacking the stream before passing it to the unmarshalling >>>> framework? Then you will have to keep track of the ‘{‘ and ‘}’ characters >>>> yourself, either with the stack Matt suggests or as a counter. >>>> >>>> Ralph >>>> >>>> On Apr 1, 2014, at 8:07 AM, Matt Sicker <[email protected]> wrote: >>>> >>>>> Keep a stack of {'s and pop them when you get a }. Like a deterministic >>>>> pushdown automaton. >>>>> >>>>> >>>>> On 1 April 2014 07:45, Gary Gregory <[email protected]> wrote: >>>>> I have a local patch for LOG4J2-583 to have the Log4j TCP and UDP socket >>>>> servers unmarhsal XML log events. >>>>> >>>>> This is "easy" for XML because when you have a stream of bytes and you >>>>> know its encoding, you can look for the end of an event by looking for >>>>> its closing tag: </Event>. Right now, my XML processing code, looks for >>>>> the end tag and feeds JAXB a substring from the buffer. Easy. Done. >>>>> >>>>> Not so much with JSON. You cannot use the same hack, there is no end tag. >>>>> All you have is an "end of object" closing bracket "}" which looks the >>>>> same as the closing marker for all other objects. >>>>> >>>>> So it looks like I would need to hook in a little deeper into a JSON >>>>> unmarshalling framework to extract each JSON log events as I see them. >>>>> >>>>> Any thoughts here? >>>>> >>>>> Gary >>>>> >>>>> -- >>>>> E-Mail: [email protected] | [email protected] >>>>> Java Persistence with Hibernate, Second Edition >>>>> JUnit in Action, Second Edition >>>>> Spring Batch in Action >>>>> Blog: http://garygregory.wordpress.com >>>>> Home: http://garygregory.com/ >>>>> Tweet! http://twitter.com/GaryGregory >>>>> >>>>> >>>>> >>>>> -- >>>>> Matt Sicker <[email protected]> >>>> >>>> >>>> >>>> >>>> -- >>>> E-Mail: [email protected] | [email protected] >>>> Java Persistence with Hibernate, Second Edition >>>> JUnit in Action, Second Edition >>>> Spring Batch in Action >>>> Blog: http://garygregory.wordpress.com >>>> Home: http://garygregory.com/ >>>> Tweet! http://twitter.com/GaryGregory >>>> >>>> >>>> >>>> -- >>>> E-Mail: [email protected] | [email protected] >>>> Java Persistence with Hibernate, Second Edition >>>> JUnit in Action, Second Edition >>>> Spring Batch in Action >>>> Blog: http://garygregory.wordpress.com >>>> Home: http://garygregory.com/ >>>> Tweet! http://twitter.com/GaryGregory >>> >> > > > > > -- > Matt Sicker <[email protected]>
