如何循环并获取 json 对象的特定值,我如何使用该 json 对象获取该 json 对象中存在的其他实体?
How to loop and get the specific value of the json object ,how can i use that json object to get the other entity present in that json object?
我正在使用 java。
我已粘贴下面的回复以供参考。我需要循环下面的 JSON 数组响应。
我可以得到完整的回复。但是,我需要首先访问 example: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
}
]
}
我假设您从完整的 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!
}
JSON 是一个 Serialization Format。这意味着您应该很少直接分析 JSON。
典型的模式是将 反序列化 JSON 为 Java 对象,然后在您的分析中使用它们。例如,甚至可以在生成的集合上使用对象查询 API,例如 QueryDSL。
首先创建一个名为 Devices
的 class,其中包含所有设备属性的 setter 和 getter 以及一个构造函数 "contract class"
然后在你的主 class "Activity" 中定义一个实例:
static ArrayList<Devices> jsonDevice = new ArrayList<Devices>();
然后在你的 AsyncTask
-> 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
}}
我正在使用 java。
我已粘贴下面的回复以供参考。我需要循环下面的 JSON 数组响应。
我可以得到完整的回复。但是,我需要首先访问 example: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 } ] }
我假设您从完整的 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!
}
JSON 是一个 Serialization Format。这意味着您应该很少直接分析 JSON。
典型的模式是将 反序列化 JSON 为 Java 对象,然后在您的分析中使用它们。例如,甚至可以在生成的集合上使用对象查询 API,例如 QueryDSL。
首先创建一个名为 Devices
的 class,其中包含所有设备属性的 setter 和 getter 以及一个构造函数 "contract class"
然后在你的主 class "Activity" 中定义一个实例:
static ArrayList<Devices> jsonDevice = new ArrayList<Devices>();
然后在你的 AsyncTask
-> 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
}}