当前位置: 首页 > 知识库问答 >
问题:

问题转换。要映射的json文件

应嘉容
2023-03-14

我在将简单的JSON消息转换为映射时遇到问题

Example_1.json:

{"toAddress":"aaa@bbb.com",
"fromAddress":"bbb@ccc.com",
"subject":"Subject from JSON",
"body":"Body from JSON"}

Spring配置:

<!-- Read file and output to filesIn channel -->
<int:channel id="filesIn" />
<int-file:inbound-channel-adapter id="filesReader"
                                  directory="file:/C:/data/inputDirectory"
                                  filename-pattern="*.json"
                                  channel="filesIn"
                                  prevent-duplicates="true">
    <int:poller id="poller" fixed-delay="5000" max-messages-per-poll="1" />
</int-file:inbound-channel-adapter> 

<file:file-to-string-transformer input-channel="filesIn" output-channel="strings"/>

<int:json-to-object-transformer input-channel="strings" output-channel="objectsOut" type="java.util.Map"/>

<int:object-to-map-transformer input-channel="objectsOut" output-channel="mapOut"/>

<int-file:outbound-channel-adapter channel="mapOut" directory="file:/C:/data/outputDirectory1" />


<!-- Activate logging -->

<int:channel id="filesIn">
    <int:interceptors>
        <int:wire-tap channel="LoggingChannel" />
    </int:interceptors>
</int:channel>

<int:channel id="strings">
    <int:interceptors>
        <int:wire-tap channel="LoggingChannel" />
    </int:interceptors>
</int:channel>

<int:channel id="objectsOut">
    <int:interceptors>
        <int:wire-tap channel="LoggingChannel" />
    </int:interceptors>
</int:channel>

<int:channel id="mapOut">
    <int:interceptors>
        <int:wire-tap channel="LoggingChannel" />
    </int:interceptors>
</int:channel>

<int:channel id="LoggingChannel" />
<int:service-activator input-channel="LoggingChannel" expression="@LOG.trace('Headers are: {}, Payload is: {} ', headers, payload)" />

<bean id="LOG" class="SafeLoggerFactory" factory-method="getLogger">
    <constructor-arg value="integrationEmailLogger"/>
</bean>

错误:

org.springframework.integration.handler.LoggingHandler]-org.springframework.messaging.MessageHandling异常:未能将消息有效载荷写入文件;嵌套异常是java.lang.IllegalArgumentExcture:不支持的消息有效载荷类型[java.util.HashMap],故障消息=GenericMessage[有效载荷={subject=从JSON的主题,from m地址=bbb@ccc.com,body=从JSON的正文,到地址=aaa@bbb.com},标头={file_originalFile=C:\data\inputDirectory\Example_1.json,id=be65b982-ef47-0207-2ec9-3fdb04837651,file_name=Example_1.json,时间戳=1575407244281}]

本质上,我想将JSON文本转换成一个映射,这样我就可以使用诸如payload之类的表达式。toAddress使用出站通道适配器发送电子邮件

共有1个答案

竺鸿骞
2023-03-14

您应该始终包括完整的堆栈跟踪;截断的堆栈跟踪是无用的。

为什么你有一个对象到映射转换器?json到对象转换器已经为您创建了一个映射;o-t-m-t是多余的。

文件int file:outbound channel adapter不知道如何处理映射负载。这就是失败的地方。

 类似资料:
  • 我目前正在使用Laravel v7。2.安装babenkoivan/scout elasticsearch驱动程序(4.2)并使用AWS elasticsearch 7.1调幅。在我的应用程序中映射了几个表,这些表工作正常,但嵌套映射存在问题,以前该映射工作正常,现在已损坏。 我将数据保存到一个表中,并将该表数据复制到AWS Elasticsearch中。我使用MySQL 5.6,所以我使用TEX

  • 我有一个从RESTendpoint返回的列表。我需要将该列表分为多个类别(类别是列表中每个条目中的一个项目)。各个类别将写入缓存,以便以后更快地查找。 我不知道我能不能。映射()条目,并提供多个filter()或某种类型的case语句,以将类别条目放入正确的bucket中。 用rxJava实现这样的东西听起来合理吗? 更新:非工作版本 然而,这些按顺序触发,这是我的理解,第二个可观察对象没有发送任

  • 我犯了一个错误,比如: 我知道在堆栈溢出中已经出现了一些类似的问题,但解决方案对我来说并不适用。请您检查一下我的实体,以便找出到底是什么导致了这个问题? 使用者 组 角色 控制器方法 痕迹 /vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(2607):教义\ORM\实用程序\标识符Flattener- 解决了的! 该问题是由重新定义的方法引起

  • 我有一个文档,我希望将其存储在ElasticSearch中,并能够对其运行查询,但我认为文档结构可能格式不正确,因此我无法进行有效的查询。 该文档试图是通用的,因此具有一组重复结构。 例如: 注意:我简化了这个例子,就像在真实的文档中一样,重复结构有大约7个字段,其中3个字段将明确标识“类型”。 从上面的示例中,我看不到如何编写映射,因为“值”可以是: 整数 IP地址 只需要用空格标记的字段 约会