改造:处理可以是空字符串或数组的属性

时间:2016-04-04 22:18:33

标签: android gson retrofit

我使用Retrofit2并且我被要求使用以下json:

  

{" status":" success",       有效载荷{         " prop1":1234,         " prop2":"" }}

问题是prop2可以是空字符串或对象数组。 (空数组不是它们的选项)

我不记得Retrofit有一种处理这种类型不一致的机制。我正在寻找一个可以接收这个属性的配方作为某种通用对象,任何可能使用GSon稍后解析它或其他一些替代方法使它工作。

1 个答案:

答案 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
    }
}