我目前正在遇到
class A{
constructor(readonly a: number, readonly b: number){}
copy(): A {
return {
...this,
b: "my string" // should be of type number!
}
}
}
这是因为在营业日期之前有')',并且在此之前有四个NUL,但由于它们是虚构的字符,因此未在此处显示。那是我试图映射到我的对象的json字符串的开头。我只是发送一个序列化为Avro的ByteArray,并尝试使用ByteArray Deserializer进行反序列化(我假设是问题所在)。如何摆脱那些虚构的字符,使其正确映射到我的对象,或更改我的SCS使用者配置以仅在该使用者上使用Avro反序列化。
JsonParseException: Illegal character ((CTRL-CHAR, code 0)): only regular white space (\r, \n, \t) is allowed between tokens
at [Source: (String)" ){"BusinessDate"
我尝试过
// 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}"
答案 0 :(得分:1)
此行有点误导(至少对我而言)
String json = StringUtils.newStringUtf8(message.getPayload().getBytes(StandardCharsets.UTF_8));
JSON CAN 包含NULL
控制字符,但仅在转义且在字符串字段中时才包含。我建议从简单的json.replace("\0", "");
开始,检查代码是否进一步。