Gson从json字符串解析正则表达式值



我从消息队列中收到以下字符串,不带双引号;

{
tableName:STUDENT,
columns: [{
name: PARENT_PHONE,
regex:{
regexCode:PHONE,
regexValue:[0-9\-\+]{9,15}
}
}]
}

这是一个字符串,我试图将其解析为如下的对象;

TableDefinition tableDefinition = gson.fromJson(tableJson, TableDefinition.class);

当然它会抛出一个异常,比如;

Expected a string but was "BEGIN_ARRAY" at line ...

我理解regexValue应该以有效字符开始,而不是[,然后我编写了一个自定义反序列化器来解析regexValue属性。

现在是抛出malformmedjsonexception和调试断点甚至不停止自定义反序列化方法;

com.google.gson.stream.MalformedJsonException: Unterminated array at line 1 column 325 path $.columns[0].regex.regexValue[1]

如exception所示,Gson仍然将regexValue识别为数组。

如何告诉Gson, regexValue是一个字符串?如何处理这种情况?

你不能编写一个自定义序列化器来一个畸形的JSON。如果它是畸形的,那么它就不再是JSON了,Gson就不能对一个随机字符串做出任何假设。最好的办法是修复发送到队列的内容,如果这是不可行的,那么你将不得不修复当前格式错误但仍为json的字符串。

相关内容

  • 没有找到相关文章

最新更新