面临列表列表字符串的序列化问题

问题描述

我从一个 API 中得到一个分数,它是一个列表列表。

回复

"score":"[[3289780,0.873],[25046762,0.3],[18124806,0.259],[25587374,0.047],[5725643,0.045],[23887210,0.03],[26185297,0.005]]"

但是当分数不存在时,它会返回分数的空列表。

空时响应

"score":"\"\""
or
"score":""

我使用 json 解析器进行解析,在第二种情况下,score = "",我什至可以检查空字符串而不解析它。 但是在“分数”的情况下:“”“”我无法进行此检查。

我希望我的解析器被通用化

解析代码

List<List<Object>> scores = new ArrayList<>();
scores = JsonUtil.deserialize(scoreResponse,scores.getClass());

scoreResponse 是一个字符串,其中包含来自 score 的值。

JsonUtils 反序列化代码

public static <T> T deserialize(String json,Class<T> clazz) {
        try {
            return objectMapper.readValue(json,clazz);
        } catch (IOException ex) {
            throw new IllegalArgumentException("Cannot deserialize given object",ex);
        }
    }

任何帮助将不胜感激。

解决方法

好吧,我会尽力解决我能解决的问题。 在以下情况下:

score= "\"\""

在该实例中,似乎“用于表示”(引号)字符。 所以在你的支票中你可以说:

if (score == "\"\"") {return null;}

例如。

试试看,希望有帮助

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...