Hi

It looks like your json is invalid / not structured well. You inner
map uses duplicate ids, eg document.
If possible use a array instead, eg [ ]

See the unit test from the source code - JsonPathSplitWriteAsStringTest

On Fri, Feb 16, 2018 at 10:44 AM, Joery Vreijsen <jhjvreij...@gmail.com> wrote:
> That indeed was my thought aswell, i tried the following route:
>
> from("file:src/data")
>                 .split().jsonpathWriteAsString("$..document")
>                 .setHeader(Exchange.FILE_NAME, new 
> SimpleExpression("${exchangeId}.json"))
>                 .to("file:target/messages/others”);
>
> But this resulted also in the following exception:
>
> No body available of type: java.io.InputStream but has value: {name=document 
> 1, type=pdf} of type: java.util.LinkedHashMap on: Message[]. Caused by: No 
> type converter available to convert from type: java.util.LinkedHashMap to the 
> required type: java.io.InputStream with value {name=document 1, type=pdf}. 
> Exchange[ID-local-1518795550966-0-3]. Caused by: 
> [org.apache.camel.NoTypeConversionAvailableException - No type converter 
> available to convert from type: java.util.LinkedHashMap to the required type: 
> java.io.InputStream with value {name=document 1, type=pdf}]
>
> I tried the route in the Spring DSL, and there the WriteAsString option 
> worked, but outputted the .toString() value of the Map class, e.g.  
> "{name=document 1, type=pdf}”.
> Is there a possibility to let it output a valid json string, or is it just 
> the Map toString function you can get back?
>
> Thanks again.
>
> Cheers!
>
> - Joery
>
> On 16 Feb 2018 16:37 +0100, Claus Ibsen <claus.ib...@gmail.com>, wrote:
>> Ah okay yeah that can make sense to try to tell it to output as
>> String. See the writeAsString option you would need to use
>> https://github.com/apache/camel/blob/master/components/camel-jsonpath/src/main/docs/jsonpath-language.adoc
>>
>>
>>
>> On Fri, Feb 16, 2018 at 10:30 AM, Joery Vreijsen <jhjvreij...@gmail.com> 
>> wrote:
>> > Hi Clause,
>> >
>> > Thanks for the quick response!
>> >
>> > When removing the String.class i get the following exception:
>> >
>> > No body available of type: java.io.InputStream but has value: 
>> > {name=document 2, type=pdf} of type: java.util.LinkedHashMap on: 
>> > Message[]. Caused by: No type converter available to convert from type: 
>> > java.util.LinkedHashMap to the required type: java.io.InputStream with 
>> > value {name=document 2, type=pdf}. Exchange[ID-local-1518794941554-0-5]. 
>> > Caused by: [org.apache.camel.NoTypeConversionAvailableException - No type 
>> > converter available to convert from type: java.util.LinkedHashMap to the 
>> > required type: java.io.InputStream with value {name=document 2, type=pdf}]
>> >
>> > I was trying to split a Json without getting a Map POJO as return, but 
>> > rather just a String value.
>> >
>> > Cheers,
>> >
>> > - Joery
>> >
>> >
>> > On 16 Feb 2018 16:27 +0100, Claus Ibsen <claus.ib...@gmail.com>, wrote:
>> > > Try without the String.class in the jsonpath
>> > >
>> > > On Fri, Feb 16, 2018 at 10:22 AM, Joery Vreijsen <jhjvreij...@gmail.com> 
>> > > wrote:
>> > > > Hi,
>> > > >
>> > > > I’m trying to split my following Json file with the Camel Splitter & 
>> > > > JsonPath components.
>> > > >
>> > > > [
>> > > > {
>> > > > "document": {
>> > > > "name": "document 1",
>> > > > "type": "pdf"
>> > > > }
>> > > > },
>> > > > {
>> > > > "document": {
>> > > > "name": "document 2",
>> > > > "type": "pdf"
>> > > > }
>> > > > }
>> > > > ]
>> > > >
>> > > > The route I’m using looks like this:
>> > > >
>> > > > from("file:src/data")
>> > > > .split().jsonpath("$..document", String.class)
>> > > > .to("file:target/messages/others");
>> > > >
>> > > > I expected two output files with contents similar to this:
>> > > >
>> > > > "document": {
>> > > > "name": "document 1",
>> > > > "type": "pdf"
>> > > > }
>> > > >
>> > > > Strangely enough i got 4 output files with the following content:
>> > > >
>> > > > file 1: [{"name":"document 1"
>> > > > file 2: "type":"pdf"}
>> > > > file 3: {"name":"document 2"
>> > > > file 4: "type":"pdf"}]
>> > > >
>> > > > Am i doing something wrong with my JsonPath? Any help is very much 
>> > > > appreciated!
>> > > >
>> > > > Cheers,
>> > > >
>> > > > - Joery
>> > > >
>> > > >
>> > > >
>> > >
>> > >
>> > >
>> > > --
>> > > Claus Ibsen
>> > > -----------------
>> > > http://davsclaus.com @davsclaus
>> > > Camel in Action 2: https://www.manning.com/ibsen2
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> http://davsclaus.com @davsclaus
>> Camel in Action 2: https://www.manning.com/ibsen2



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to