如何处理获得相同名称但不同类型的字段?在同一个请求中,我有时会从 API 获取整数值,有时会获取布尔值。我想知道当我得到这样的 Json 时如何处理。我创建了类型适配器,但它不起作用
我考虑过创建不同的 POJO 类。但是这个问题不仅仅针对一个请求。由于这个原因,我不喜欢创建 POJO。顺便说一句,我看到了类似的问题,但它并没有解决我的问题。
{
"name" : "john doe",
"isValid" : true
}
有时我会明白
{
"name" : "john doe",
"isValid" : 1
}
获取整数时出现意外的 json 异常
class XModel{
private boolean isValid;
...
...
}
我想为每个请求返回一个布尔值。有谁知道如何解决这个问题?
编辑:我想通过类型适配器防止 instanceOf 关键字
解决方案:@Michał Ziober 的回应对我有用。
class BooleanJsonDeserializer implements JsonDeserializer<Boolean> {
private final Set<String> TRUE_STRINGS = new HashSet<>(Arrays.asList("true", "1", "yes"));
@Override
public Boolean deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
System.out.println(json);
JsonPrimitive jsonPrimitive = json.getAsJsonPrimitive();
if (jsonPrimitive.isBoolean()) {
return jsonPrimitive.getAsBoolean();
} else if (jsonPrimitive.isNumber()) {
return jsonPrimitive.getAsNumber().intValue() == 1;
} else if (jsonPrimitive.isString()) {
return TRUE_STRINGS.contains(jsonPrimitive.getAsString().toLowerCase());
}
return false;
}
}
胡子哥哥
慕虎7371278
隔江千里
相关分类