将未加引号的字符串转换为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 (将#修改为@)