我使用Retrofit2并且我被要求使用以下json:
{" status":" success", 有效载荷{ " prop1":1234, " prop2":"" }}
问题是prop2可以是空字符串或对象数组。 (空数组不是它们的选项)
我不记得Retrofit有一种处理这种类型不一致的机制。我正在寻找一个可以接收这个属性的配方作为某种通用对象,任何可能使用GSon稍后解析它或其他一些替代方法使它工作。
答案 0 :(得分:0)
你可以尝试这个来检查prop2是数组还是空字符串
JsonObject jsonObject = new Gson().fromJson("{ \"status\":\"success\", \"payload\": { \"prop1\": 1234, \"prop2\": \"\" } }", JsonObject.class);
JsonObject payload = jsonObject.getAsJsonObject("payload");
JsonElement jsonElement = payload.get("prop2");
if (jsonElement.isJsonArray()) {
// value of prop2 is an array
} else if (jsonElement.isJsonPrimitive()) {
JsonPrimitive jsonPrimitive = jsonElement.getAsJsonPrimitive();
if (jsonPrimitive.isString() && "".equals(jsonPrimitive.getAsString())) {
// value of prop2 is an empty String
}
}