如何循环并获取 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?

  1. 我正在使用 java。

  2. 我已粘贴下面的回复以供参考。我需要循环下面的 JSON 数组响应。

  3. 我可以得到完整的回复。但是,我需要首先访问 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 
         }}