1

是否有一种简单的方法可以使用自定义 ObjectMapper (Jackson) 将 JSON 有效负载转换为 Java 对象,或者我是否必须提供自定义类型转换器。我知道我可以使用处理器,但不知何故最好使用流定义的输入和输出类型。

在第二种情况下:我什至能够为应用程序/json 到 Java 提供自定义类型转换器吗?

文档指出:“customMessageConverters 按定义的顺序添加在标准转换器之后。因此,为新媒体类​​型添加转换器通常比替换现有转换器更容易。”

我敢打赌,有一个现有的“应用程序/json”转换器——但乍一看,如果甚至可以替换现有的转换器,我找不到更多信息。

谢谢!彼得

4

1 回答 1

1

如果查看streams.xml可以看到相关配置。配置的列表用于构造一个CompositeMessageConverter,它按列表顺序访问每个 MessageConverter,直到找到可以进行转换并返回非空结果的一个。通过过滤所有继承AbstractFromMessageConverter的候选消息转换器列表,为每个为转换配置的模块实例创建一个 CompositeConverter 实例(即,定义一个 inputType 或 outputType 值)。该列表与那些对public boolean supportsTargetMimeType(MimeType mimeType)响应为true的列表配对(其中 mimeType 是输入/输出类型的值)。CompositeMessageConverter 被注入到相应的 MessageChannel 并转换有效负载。

您可以做几件事。您可以覆盖xd.messageConverters bean 定义。例如,您可以将JsonToPojoMessageConverterPojoToJsonMessageConverter替换为您自己的子类。您还可以在上述转换器之前的列表中插入您自己的实现,并让您的实现仅匹配您需要自定义 JSON 映射器的特定域对象。另一种可能性是定义您自己的 mime 类型并将该 mime 类型的转换器提供为customMessageConverters。在任何情况下,请遵循这些指南来扩展 Spring XD

于 2014-12-09T22:34:32.460 回答