2017-02-14 4 views
0

スプリッタアプリケーションを使用してJSON配列を分割しようとしています。 [{...}、{...}]を複数のメッセージ{...} {...}に変換します。 (ドキュメントあたり)入力のcontentType =アプリケーション/ JSONで春クラウドはジャクソンから例外を浮上さ:JSONアレイを使用したSpring Cloud Dataflowスプリッタ

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_ARRAY token at [Source: [[email protected]; line: 1, column: 1] 

単体テストは、私は仕事への分割のための正しいパターンを持って示した:

splitter.expression=#jsonPath(payload,'$.[*]') 

このSpring XD 1.3で私のために働いた。このケースを処理するためにSpring Cloud(またはSplitter)をどのように設定する必要がありますか?入力と出力は両方ともカフカ文字列(ヘッダーなし)です。

+0

また、input.contentType = text/plainを使用すると、これはやや難解な例外が生成されます:key = 'null'およびpayload = '{-1、5、13、99、111、 114、114、101、108、97、116、105、111、110、73、100、0、0、38、34、102、55、... ' –

+0

データフローストリームこの場合?または、カフカのトピックからデータを受け取るSpring Cloudストリームアプリを意味しますか? –

答えて

0

スプリッターへのメッセージがSpring Cloud以外のアプリケーションから来た場合は、--spring.cloud.stream.bindings.<inputChannelName>.consumer.headerMode=rawを設定する必要があります。 application/json contentTypeメッセージにはjackson例外がありますが、少なくともtext/plain contentTypeメッセージが式に対して適切に評価されます。

+0

送信時に、 'メッセージをチャネル 'output'に送信できませんでした。ネストされた例外はjava.lang.IllegalArgumentExceptionです:ペイロードはnullであってはなりません。私はデバッグログを有効にしていますが、ペイロードには何かがあります。 –

+0

'DEBUG 1311 --- [afka-listener-1] osintegration.channel.DirectChannel: 'output'チャネルのpreSendメッセージ:GenericMessage [payload = 012 "、" some ":" data "}、headers = {sequenceNumber = 1、kafka_offset = 2663、sequenceSize = 1、correlationId = f9c64983-5908-af0c-3b2c-bb9c4bb03e86、id = 07 3d1d21-8474-bdf0-46c8-e4a71e2117b2、 kafka_receivedPartitionId = 0、kafka_receivedTopic = MyTopic、contentType = te xt/plain、timestamp = 1487206118408}] ' –

+0

この問題は見られますか? http://stackoverflow.com/questions/41781351/spring-cloud-dataflow-type-conversion-not-working-in-processor-component –

関連する問題