[英]Gson parse regex value from json string
我从消息队列中收到以下字符串,没有双引号;
{
tableName:STUDENT,
columns: [{
name: PARENT_PHONE,
regex:{
regexCode:PHONE,
regexValue:[0-9\\-\\+]{9,15}
}
}]
}
这是我尝试将其解析为 object 的字符串,如下所示;
TableDefinition tableDefinition = gson.fromJson(tableJson, TableDefinition.class);
当然它会抛出一个异常;
Expected a string but was "BEGIN_ARRAY" at line ...
我知道regexValue
应该以有效字符而不是[
开头,然后我编写了一个自定义反序列化程序来解析 regexValue 属性。
现在抛出 MalformedJsonException 和调试断点甚至在自定义反序列化器方法中都不会停止;
com.google.gson.stream.MalformedJsonException: Unterminated array at line 1 column 325 path $.columns[0].regex.regexValue[1]
正如异常向我们展示的那样,Gson 仍然将 regexValue 识别为数组。
如何告诉 Gson regexValue 是一个字符串? 遇到这种情况怎么办?
您不能将自定义解串器写入格式错误的 JSON。如果格式错误,则它不再是 JSON,并且 Gson 无法对随机字符串做出任何假设。 最好的办法是修复发送到队列的内容,如果那不可行,那么您将不得不修复当前格式错误但仍是字符串的 JSON。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.