【发布时间】:2020-10-14 18:51:14
【问题描述】:
我现在遇到了
JsonParseException: Illegal character ((CTRL-CHAR, code 0)): only regular white space (\r, \n, \t) is allowed between tokens
at [Source: (String)" ){"BusinessDate"
这是因为营业日期之前的')',并且在此之前有四个NUL,但是它们没有出现在这里,因为它们是虚构的字符。那是我试图映射到我的对象的 json 字符串的开头。我只是发送一个序列化为 Avro 的 ByteArray,并尝试使用 ByteArray Deserializer 进行反序列化(我假设这是问题所在)。如何摆脱那些虚构的字符,使其正确映射到我的对象,或更改我的 SCS 消费者配置以仅在那个消费者上使用 Avro 反序列化。
// External topic listener
@StreamListener(ChannelsScheduler.SCHEDULER_IN_FROM_EXTERNAL_EVENT)
public void consumeMessage(@Payload GenericMessage<String> message) throws IOException
{
logger.info("Consumed message from external topic: {}", message);
我试过了
GPTMStatus gptmStatus = mapper.readValue(message.getPayload(), GPTMStatus.class);
GPTMStatus gptmStatus = mapper.readValue(message.getPayload().trim(), GPTMStatus.class);
GPTMStatus gptmStatus = mapper.readValue(message.getPayload().replace(")", ""), GPTMStatus.class);
String json = StringUtils.newStringUtf8(message.getPayload().getBytes(StandardCharsets.UTF_8));
GPTMStatus gptmStatus = mapper.readValue(json, GPTMStatus.class);
所有三个都收到与上述相同的错误。
全部负载:
" ){"BusinessDate":"2020-03-05","ContentUri":"20180712_EOB/1583443159984/0.xml","DFReference":"80712_EOB","DFRevision":0,"DFVersion":1583443159984}"
这就是我发送消息的方式:
kafka
.send(
destination,
formatter.transform(df.getCanonicalPayload()).getBytes(StandardCharsets.UTF_8))
.get();
【问题讨论】:
-
你能添加示例
JSON有效载荷吗?我了解到您的有效载荷是String-message.getPayload().trim()。 -
标签: java jackson deserialization spring-kafka spring-cloud-stream