我正在使用reformation2,有人要求我使用以下json:
{“status”:“成功”,
有效载荷{
“prop1”:1234,
“prop2”:“}}”
问题是prop2可以是空字符串或对象数组。(空数组不是它们的选项)
我不记得改装有一个机制来处理这种类型的不一致。我正在寻找一个可能作为某种泛型对象接收这个属性的方法,或者以后使用gson解析它,或者使用其他方法使它工作。

最佳答案

您可以尝试检查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
    }
}

09-27 12:34