[ 
https://issues.apache.org/jira/browse/CAMEL-22297?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Luis Sergio Faria Carneiro updated CAMEL-22297:
-----------------------------------------------
    Summary: camel-jsonata does not support json array as input  (was: 
camel-jsonata does not support json array inputs)

> camel-jsonata does not support json array as input
> --------------------------------------------------
>
>                 Key: CAMEL-22297
>                 URL: https://issues.apache.org/jira/browse/CAMEL-22297
>             Project: Camel
>          Issue Type: Improvement
>    Affects Versions: 4.8.8, 4.10.6, 4.13.0
>            Reporter: Luis Sergio Faria Carneiro
>            Priority: Minor
>
> The jsonata component fails with the following exception: if the input body 
> is a json array:
>  
> {code:java}
> com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot 
> deserialize value of type 
> `java.util.LinkedHashMap<java.lang.String,java.lang.Object>` from Array value 
> (token `JsonToken.START_ARRAY`)
>  at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` 
> disabled); line: 1, column: 1]
>     at 
> com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
>  ~[jackson-databind-2.19.1.jar:2.19.1]
>     at 
> com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1794)
>  ~[jackson-databind-2.19.1.jar:2.19.1]
>     at 
> com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1568)
>  ~[jackson-databind-2.19.1.jar:2.19.1]
>     at 
> com.fasterxml.jackson.databind.deser.std.StdDeserializer._deserializeFromArray(StdDeserializer.java:221)
>  ~[jackson-databind-2.19.1.jar:2.19.1]
>     at 
> com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:456)
>  ~[jackson-databind-2.19.1.jar:2.19.1]
>     at 
> com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:31)
>  ~[jackson-databind-2.19.1.jar:2.19.1]
>     at 
> com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
>  ~[jackson-databind-2.19.1.jar:2.19.1]
>     at 
> com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4971)
>  ~[jackson-databind-2.19.1.jar:2.19.1]
>     at 
> com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3932) 
> ~[jackson-databind-2.19.1.jar:2.19.1]
>     at 
> org.apache.camel.component.jsonata.JsonataEndpoint.onExchange(JsonataEndpoint.java:152)
>  ~[camel-jsonata-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.support.ProcessorEndpoint$1.process(ProcessorEndpoint.java:61)
>  ~[camel-support-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.support.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:65)
>  ~[camel-support-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.processor.SendProcessor.sendUsingProducer(SendProcessor.java:252)
>  ~[camel-core-processor-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:157) 
> ~[camel-core-processor-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.handleFirst(RedeliveryErrorHandler.java:440)
>  ~[camel-core-processor-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:416)
>  ~[camel-core-processor-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.doRun(DefaultReactiveExecutor.java:199)
>  ~[camel-base-engine-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.executeReactiveWork(DefaultReactiveExecutor.java:189)
>  ~[camel-base-engine-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.tryExecuteReactiveWork(DefaultReactiveExecutor.java:166)
>  ~[camel-base-engine-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:148)
>  ~[camel-base-engine-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:59)
>  ~[camel-base-engine-4.13.0.jar:4.13.0]
>     at org.apache.camel.processor.Pipeline.process(Pipeline.java:163) 
> ~[camel-core-processor-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.impl.engine.CamelInternalProcessor.processNonTransacted(CamelInternalProcessor.java:347)
>  ~[camel-base-engine-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:323)
>  ~[camel-base-engine-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:82)
>  ~[camel-base-engine-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.support.AsyncProcessorSupport.process(AsyncProcessorSupport.java:32)
>  ~[camel-support-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.component.platform.http.vertx.VertxPlatformHttpConsumer.processExchange(VertxPlatformHttpConsumer.java:269)
>  ~[camel-platform-http-vertx-4.13.0.jar:4.13.0]
>     at 
> org.apache.camel.component.platform.http.vertx.VertxPlatformHttpConsumer.lambda$handleRequest$1(VertxPlatformHttpConsumer.java:229)
>  ~[camel-platform-http-vertx-4.13.0.jar:4.13.0]
>     at 
> io.vertx.core.impl.ContextImpl.lambda$executeBlocking$4(ContextImpl.java:192) 
> ~[vertx-core-4.5.16.jar:4.5.16]
>     at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:270) 
> [vertx-core-4.5.16.jar:4.5.16]
>     at io.vertx.core.impl.ContextImpl$1.execute(ContextImpl.java:221) 
> [vertx-core-4.5.16.jar:4.5.16]
>     at io.vertx.core.impl.WorkerTask.run(WorkerTask.java:56) 
> [vertx-core-4.5.16.jar:4.5.16]
>     at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
>  [?:?]
>     at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
>  [?:?]
>     at 
> io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
>  [netty-common-4.1.119.Final.jar:4.1.119.Final]
>     at java.base/java.lang.Thread.run(Thread.java:840) [?:?]
>  {code}
> *Reproducer:*
> Consider integration.yaml:
> {code:java}
> - from:
>     uri: rest:get:/test
>     steps:
>     - setBody:
>         constant: "[1, 2, 3]"      
>     - to:
>         uri: "jsonata:transform.jsonata"
>         parameters:
>           inputType: JsonString
>           outputType: JsonString
>           {code}
> and transform.jsonata:
> {code:java}
> $.{
>     "double": 2 * $
> } {code}
> Run the code with jbang:
> {code:java}
> jbang -Dcamel.jbang.version=4.13.0 camel@apache/camel run integration.yaml 
> transform.jsonata {code}
> and submit a get request to the endpoint.
> {code:java}
> curl http://localhost:8080/test {code}
> The same data on [https://try.jsonata.org/] yields the result:
> {code:java}
> [  {    "double": 2  },  {    "double": 4  },  {    "double": 6  }] {code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to