我收到以下JSON响应:
对象中的“数据”:

"status": true,
"data":{
    //Some data
}


有时它以数组形式出现:

"status": true,
"data":[
    //Some data
]


如何动态检查数据的响应,是对象还是数组?
*我正在使用改造

我的改造数组解析为:

@SerializedName("data")
ArrayList<DataDetail> dataList;


提前致谢!

最佳答案

如果Json不知道是JsonObject还是JsonArray,则只需使用JsonElement,如下所示:

@SerializedName("data")
private JsonElement data;


现在,根据您的要求将此JsonElement转换为您各自的模型,您可以使用以下代码:

if(data instanceOf JsonObject){
    YourModelForData object = YourDataComponentForObject(data);
    // Do anything with Object
} else {
    List<YourModelForData> array = YourDataComponentForArray(data);
    // Do anything with array
}

public YourModelForData YourDataComponentForObject(JsonElement data) {
     Type type = new TypeToken<YourModelForData>() {
     }.getType();
     YourModelForData item = new Gson().fromJson(data, type);
}

public List<YourModelForData> YourDataComponentForArray(JsonElement data) {
      Type type = new TypeToken<List<YourModelForData>>() {
      }.getType();
      List<YourModelForData> items = new Gson().fromJson(data, type);
}


快乐编码;

关于android - 如何动态处理翻新JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41584123/

10-10 22:47