繁体   English   中英

Gson 解析来自 json 字符串的正则表达式值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM