我正在使用java。
我已粘贴以下回复以供参考。我需要循环下面的JSON数组响应。
我能够得到完整的回复。但是,我需要首先访问设备类型,例如:deviceType = android然后使用该设备类型我需要获取该特定设备类型的ID,例如:id = 16。
Response: { "BannerConfigurations": [ { "id": 16, "partnerId": 69, "appId": "28470216", "affiliateData": "", "status": true, "deviceType": "ios", "daysHidden": 15, "daysReminder": 30 }, { "id": 161, "partnerId": 69, "appId": "com.android.news", "affiliateData": "", "status": true, "deviceType": "android", "daysHidden": 15, "daysReminder": 30 } ] }
答案 0 :(得分:1)
我假设你是从完整的JSONObject开始的,但如果你有横幅配置数组,你可以跳过第一行。
JSONObject data = [insert something following your structure above];
JSONArray bannerConfigurations = data.get("BannerConfigurations");
for (int i=0; i<bannerConfigurations.length(); i++) {
JSONObject device = bannerConfigurations.getJSONObject(i);
String deviceType = device.getString("deviceType");
int id = device.getInt("id");
// do stuff!
}
答案 1 :(得分:0)
JSON是Serialization Format。这意味着您应该很少直接分析JSON。
典型的模式是将JSON 反序列化到Java对象中,然后在分析中使用它们。甚至可能在结果集合上使用对象查询API,例如QueryDSL。
答案 2 :(得分:0)
首先创建一个名为Devices
的类,其中包含所有设备属性的setter和getter以及构造函数&#34; contract class&#34;
然后在你的主要课程&#34;活动&#34;定义一个实例:
static ArrayList<Devices> jsonDevice = new ArrayList<Devices>();
然后在你的AsyncTask
- &gt; onPostExecute()
方法记下此代码:
try {
jsonTicList.clear();
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject jObject = jArray.getJSONObject(i);
String id = jObject.getString("id");
String pid = jObject.getString("partnerId");
String adata = jObject.getString("affiliateData");
String status = jObject.getString("status");
String detype = jObject.getString("deviceType");
String datype = jObject.getString("daysHidden");
String darem = jObject.getString("daysReminder");
Devices tic = new Devices(id, pid,
adata,status,detype,datype,darem);
jsonDevice.add(tic);
}
this.progressDialog.dismiss();
} catch (JSONException e) {
Log.e("JSONException", "Error: " + e.toString());
}
然后循环数据:
ArrayList<Devices> d = new ArrayList<Devices>(jsonDevice);
for (Devices d1 : d) {
if(!d1.getDeviceType().equals("Android")){
//DO What ever you want
}}