如何动态处理Jtrive JSON

时间:2017-01-11 06:29:54

标签: android json dynamic

我正在关注JSON响应: "数据"在对象中:

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

有时它以数组形式出现:

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

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

我的Retrofit解析数组:

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

提前致谢!

2 个答案:

答案 0 :(得分:2)

JSONObject json;
Object     intervention;
JSONArray  interventionJsonArray;
JSONObject interventionObject;

json = RestManager.getJSONfromURL(myuri); // retrieve the entire json stream     
Object intervention = json.get("intervention");
if (intervention instanceof JSONArray) {
    // It's an array
    interventionJsonArray = (JSONArray)intervention;
}
else if (intervention instanceof JSONObject) {
    // It's an object
    interventionObject = (JSONObject)intervention;
}
else {
    // It's something else, like a string or number
}

检查这个帖子 Test if it is JSONObject or JSONArray

答案 1 :(得分:1)

如果Json不知道它是JsonObject还是JsonArray,那么只需使用如下的JsonElement:

<div class="row">
   <div class="banner banner-lg"> </div>
   <div class="banner banner-sm"> </div>
</div>
<div class="row">
   <div class="banner banner-sm"> </div>
   <div class="banner banner-sm"> </div>
   <div class="banner banner-sm"> </div>
</div>
<div class="row">
   <div class="banner banner-sm"> </div>
   <div class="banner banner-lg"> </div>
</div>

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

@SerializedName("data")
private JsonElement data;

快乐编码&lt; {}&gt;;