gpt4 book ai didi

json - Spring集成,如何使用@Transformer从/到JSON转换?

转载 作者:行者123 更新时间:2023-12-02 04:02:38 24 4
gpt4 key购买 nike

我的问题是如何在 SI 端点之间传递对象?

我发现的几乎每个示例都使用 XML 设置,我正在使用 Annotation 并且不知道如何解决此异常

Caused by: java.lang.IllegalArgumentException: Could not resolve 'json__TypeId__' in 'javaTypes'.
at org.springframework.integration.support.json.AbstractJacksonJsonObjectMapper.createJavaType(AbstractJacksonJsonObjectMapper.java:68)
at org.springframework.integration.support.json.Jackson2JsonObjectMapper.extractJavaType(Jackson2JsonObjectMapper.java:116)
at org.springframework.integration.support.json.Jackson2JsonObjectMapper.extractJavaType(Jackson2JsonObjectMapper.java:52)
at org.springframework.integration.support.json.AbstractJacksonJsonObjectMapper.fromJson(AbstractJacksonJsonObjectMapper.java:61)
at org.springframework.integration.json.JsonToObjectTransformer.doTransform(JsonToObjectTransformer.java:87)
at org.springframework.integration.transformer.AbstractTransformer.transform(AbstractTransformer.java:33)
... 18 more

例如,人们建议使用 xml 来解决这个问题

<bean class="org.springframework.amqp.support.converter.DefaultClassMapper">
<property name="defaultType" value="foo.MyObject" />
</bean>

但是我正在使用注释创建转换器来处理从 channel 接收的消息,如下所示

    @Bean
@Transformer(inputChannel="fromTcp", outputChannel="toHandler")
JsonToObjectTransformer jsonToObjectTransformer() {
ObjectMapper mapper = new ObjectMapper();
JsonObjectMapper<JsonNode, JsonParser> jm = new Jackson2JsonObjectMapper(mapper);
return new JsonToObjectTransformer(jm);
}

实际上我不知道如何在 SI 端点之间传递对象。我只能传递 String,SI 使用默认序列化将 String 处理为 byte[],将 byte[] 处理为 String。

最佳答案

转换器需要知道要转换成什么类型​​;您收到的错误是因为您没有提供类型,因此它会回退到寻​​找包含类型信息的 header 。

相当于 xml 的是:

@Bean
@Transformer(inputChannel="fromTcp", outputChannel="toHandler")
JsonToObjectTransformer jsonToObjectTransformer() {
return new JsonToObjectTransformer(MyObject.class);
}

关于json - Spring集成,如何使用@Transformer从/到JSON转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41179674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com