如何解决将未加引号的字符串转换为JsonNode
在我们的系统中,我们使用Jackson解析传入的消息:
public JsonNode parseMessage(MqttMessage mqttMessage) {
return mapper.readTree(message.getPayload())
}
这对我们有用,因为到目前为止,我们使用的外部系统仅发送有效的JSON对象。但是,我们要支持的另一个第三方系统发送的消息可能只包含一个裸露的,未加引号的字符串,例如on
。
我们希望以与其他JSON相同的方式处理这些消息,但是使用未加引号的字符串,杰克逊会抛出此异常
Unrecognized token 'on': was expecting (JSON String,Number,Array,Object or token 'null','true' or 'false')
at [Source: (String)"on"; line: 1,column: 3]
com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'on': was expecting (JSON String,column: 3]
我们尝试使用不同的解析器功能,但似乎都不起作用。
Feature.ALLOW_UNQUOTED_FIELD_NAMES
仅适用于字段名而不适用值,其余可能的配置功能似乎与该问题无关。
我们当前的解决方法是捕获异常并在有效载荷的开头和结尾添加引号,但是由于这会隐藏其他潜在的解析问题,因此并不理想。
关于如何用杰克逊处理裸弦的任何建议?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。