Hello again,

Tried adding FAIL_ON_UNKNOWN_PROPERTIES to the object mapper but it did not
help.
I also tried with the gson datamapper with the same result.

What I find strange is that the datamappers can not unmarshal the json they
have them self created. :-/
Apart from that the fact that marshaling a list adds the class name to the
json.
This makes the resulting json very tightly coupled to the implementation.

On Wed, 3 Jun 2015 at 12:16 Pontus Ullgren <ullg...@gmail.com> wrote:

> Thanks I will try this.
>
> However I'm still a bit surprised over the way that the unmarshal add the
> full name of the POJO class to the JSON.
> Not very convenient when sending data to a external system where I do not
> have any control over the logic.
>
> Not sure if this is an issue only when  useList="true" or if unmarshaling
> a separate POJO will also add this data.
>
>
> // Pontus
>
> On Wed, 3 Jun 2015 at 10:28 Henryk Konsek <hekon...@gmail.com> wrote:
>
>> Hi,
>>
>> IMHO We should ignore unknown fields in Jackson by default:
>>
>>
>> objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
>> false);
>>
>> This is the essential option for Jackson, as JSON is usually not as strict
>> as XML. I would say that we should add failOnUnknownProperties options to
>> Jackson data format and default it to 'false'. What do you think?
>>
>> Cheers!
>>
>> PS Pontus, you can set the option on the object mapper by yourself as a
>> workaround.
>>
>> wt., 2.06.2015 o 22:32 użytkownik Pontus Ullgren <ullg...@gmail.com>
>> napisał:
>>
>> > Hi,
>> >
>> > I'm trying to build a solution when I marshal POJO into JSON and send
>> over
>> > JMS to a remote machine. On the remote machine message is also consumed
>> by
>> > a Camel route.
>> >
>> > However the JSON on the remote machine is unable to marshal the JSON
>> that
>> > the dataformater created.
>> >
>> > To show the error I created a smaller POC where I use a SEDA within the
>> > same camel context and it shows the same error.
>> > Here is the test project https://bitbucket.org/ullgren/jsonmarshaltest
>> >
>> > It seems that the unmarshal does not like the fact that the POJO class
>> name
>> > is added as a field. Is there anyway to change this behaviour,
>> >
>> > The error I get is:
>> >
>> > [/jsonmarshaltest.sendToBackend] SedaConsumer                   WARN
>> Error
>> > processing exchange. Exchange[Message:
>> > [{"com.ullgren.pontus.example.model.Order":{"id":"1","customerName":"Joe
>> > Doe","customerEmail":"joe....@acme.com
>> >
>> ","productNo":"ABC123","amount":"10","dispatched":false}},{"com.ullgren.pontus.example.model.Order":{"id":"2","customerName":"Elmer
>> > Fudd","customerEmail":"elmer.f...@acme.com
>> >
>> ","productNo":"GUN12G","amount":"2","dispatched":false}},{"com.ullgren.pontus.example.model.Order":{"id":"3","customerName":"Porky
>> > Pig","customerEmail":"porky....@acme.com
>> >
>> ","productNo":"STU3","amount":"8","dispatched":false}},{"com.ullgren.pontus.example.model.Order":{"id":"4","customerName":"Foghorn
>> > J. Leghorn","customerEmail":"legh...@acme.com
>> >
>> ","productNo":"CORN961","amount":"10","dispatched":false}},{"com.ullgren.pontus.example.model.Order":{"id":"5","customerName":"Wile
>> > E. Coyote","customerEmail":"wile.coy...@acme.com
>> > ","productNo":"BOM44","amount":"100","dispatched":false}}]].
>> > Caused by:
>> > [com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException -
>> > Unrecognized field "com.ullgren.pontus.example.model.Order" (class
>> > com.ullgren.pontus.example.model.Order), not marked as ignorable (6
>> known
>> > properties: "productNo", "amount", "customerName", "dispatched", "id",
>> > "customerEmail"])
>> >  at [Source: java.io.ByteArrayInputStream@506208e4; line: 1, column:
>> 45]
>> > (through reference chain:
>> >
>> >
>> com.ullgren.pontus.example.model.Order["com.ullgren.pontus.example.model.Order"])]
>> > com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:
>> > Unrecognized field "com.ullgren.pontus.example.model.Order" (class
>> > com.ullgren.pontus.example.model.Order), not marked as ignorable (6
>> known
>> > properties: "productNo", "amount", "customerName", "dispatched", "id",
>> > "customerEmail"])
>> >  at [Source: java.io.ByteArrayInputStream@506208e4; line: 1, column:
>> 45]
>> > (through reference chain:
>> >
>> >
>> com.ullgren.pontus.example.model.Order["com.ullgren.pontus.example.model.Order"])
>> > at
>> >
>> >
>> com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:51)
>> > at
>> >
>> >
>> com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:731)
>> > at
>> >
>> >
>> com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:915)
>> > at
>> >
>> >
>> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1292)
>> > at
>> >
>> >
>> com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1270)
>> > at
>> >
>> >
>> com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:247)
>> > at
>> >
>> >
>> com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:118)
>> > at
>> >
>> >
>> com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:232)
>> > at
>> >
>> >
>> com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:206)
>> > at
>> >
>> >
>> com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25)
>> > at
>> >
>> >
>> com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3051)
>> > at
>> >
>> >
>> com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2206)
>> > at
>> >
>> >
>> org.apache.camel.component.jackson.JacksonDataFormat.unmarshal(JacksonDataFormat.java:126)
>> > at
>> >
>> >
>> org.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:67)
>> > at
>> >
>> > org.apache.camel.processor.int
>> erceptor.TraceInterceptor.process(TraceInterceptor.java:163)
>> > at
>> >
>> >
>> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:424)
>> > at
>> >
>> >
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>> > at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)
>> > at org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
>> > at
>> >
>> >
>> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
>> > at
>> >
>> >
>> org.apache.camel.component.seda.SedaConsumer.sendToConsumers(SedaConsumer.java:291)
>> > at
>> >
>> org.apache.camel.component.seda.SedaConsumer.doRun(SedaConsumer.java:200)
>> > at
>> org.apache.camel.component.seda.SedaConsumer.run(SedaConsumer.java:147)
>> > at
>> >
>> >
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>> > at
>> >
>> >
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>> > at java.lang.Thread.run(Thread.java:745)
>> >
>> > Thanks
>> > Pontus Ullgren
>> >
>>
>

Reply via email to