如何循环并获取json对象的特定值,如何使用该json对象来获取该json对象中存在的另一个实体?

时间:2015-06-10 12:58:28

标签: java httpresponse

  1. 我正在使用java。

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

  3. 我能够得到完整的回复。但是,我需要首先访问设备类型,例如:deviceType = android然后使用该设备类型我需要获取该特定设备类型的ID,例如:id = 16。

  4. 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
        }
      ]
    }
    

3 个答案:

答案 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 
         }}