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<http://www.manning.com/bauer3/>
>>>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>>>> Spring Batch in Action <http://www.manning.com/templier/>
>>>> 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<http://www.manning.com/bauer3/>
>> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
>> Spring Batch in Action <http://www.manning.com/templier/>
>> 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<http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>
>
>
>
>


-- 
Matt Sicker <[email protected]>

Reply via email to