[ 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)