我得到了两种类型的Json响应。
一个是:
{
"status": true,
"datetime": "",
"data": [
{
"name": "xxx"
}
]
}另一种格式是:
{
"status": true,
"datetime": "",
"data":
{
"name": "aaa"
}
}对象"data“将是某个响应上的JsonObject,它将是某个响应上的JsonArray,如何处理这两种类型的请求。
我正在使用Retrofit api进行通信。
发布于 2018-11-04 20:07:54
如果您使用的是GsonConverterFactory,则可以使用JsonElement来表示JsonObject和JsonArray,因为它们都扩展了JsonElement。
然后,您可以使用方法JsonElement#isJsonArray()进行检查并执行相应的操作。
发布于 2018-11-04 20:16:36
您可以获取JsonElement形式的“数据”并检查它:分别是JsonObject或JsonArray。例如,您可以编写自定义JsonDeserializer
class CustomDeserializer implements JsonDeserializer<YourModel> {
@Override
public YourModel deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
JsonObject responseObj = json.asJsonObject;
JsonElement data = responseObj.get("data");
// get your dinamic data
if (data.isJsonObject()) {
// parse as object
} else if (data.isJsonArray()) {
// parse as array
}
}https://stackoverflow.com/questions/53140565
复制相似问题