在android中访问json内容

时间:2012-10-26 05:32:27

标签: android json

  

可能重复:
  Sending and Parsing JSON in Android

我的JSON结果采用以下格式,JSON Lint将其显示为Valid Response

我的问题是:如何访问“reportId0”值“164”,“reportId1”值157reportId2 value 165等内容都是动态值?

我的示例代码,用于访问properties的值。如何获取值reportid并在Arraylist中添加所有值?

"properties": {    
    "link": "",
    "approvalsReportCount": 3,
    "reportName0": "srcapprovals",
    "reportId0": 164,
    "reportName1": "Approvals",
    "reportId1": 157,
    "requests_report_id": "163",
    "requests_report_name": "EG approvals",
    "reportName2": "fulfillment",
    "reportId2": 165
}

4 个答案:

答案 0 :(得分:3)

这是我发现获得ReportId值的最佳方式。

以下是我的代码

JSONObject jObj = new JSONObject(result);
            JSONObject jsonResultArray = jObj.getJSONObject("results");
            JSONObject pro_object = jsonResultArray.getJSONObject("properties");
            Iterator keys = pro_object.keys();
           while(keys.hasNext()) {
                String currentDynamicKey = (String)keys.next();
                String value = pro_object.getString(currentDynamicKey);
                String upToEightCharacters = currentDynamicKey.substring(0, Math.min(currentDynamicKey.length(), 8));

                if(upToEightCharacters.startsWith("reportId"))
                {

                    Log.v("key"," new report ID key  " + currentDynamicKey);
                    Log.v("key"," new report ID key  " + pro_object.getString(currentDynamicKey) );

                }
              }

答案 1 :(得分:2)

你可以用这个

public ArrayList<String> getReportIds() {
    boolean isContinue = true;
    JSONObject json;
    String tag = "reportId";
    int i = 0;
    ArrayList<String> repIdList = new ArrayList<String>();
    JSONObject prop = null;
    try {
        json = new JSONObject("<your json string>");
        prop = json.getJSONObject("properties");
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    while (isContinue) {
        String repId = "";
        try {
            repId = prop.getString(tag + i);
            repIdList.add(repId);
            i++;
        } catch (JSONException e) {
            isContinue = false;
            e.printStackTrace();
        }
    }
    return repIdList;
}

答案 2 :(得分:1)

你可以尝试这个!!

try {
               JSONObject jObj = new JSONObject(result);
               JSONObject jsonResultArray = jObj.getJSONObject("results");
               Log.v("log_tag","json result Array :   "+ jsonResultArray);

               JSONObject pro_object = jsonResultArray.getJSONObject("properties");

               Iterator keys = pro_object.keys();

                 while(keys.hasNext()) {
                      // loop to get the dynamic key
                      String currentDynamicKey = (String)keys.next();
                      String value = pro_object.getString(currentDynamicKey);
                      approvaldto_Key = new All_Approval_Key_dto();

                      String upToEightCharacters = currentDynamicKey.substring(0, Math.min(currentDynamicKey.length(), 8));

                      if(upToEightCharacters.startsWith("reportId"))
                      {

                          approvaldto_Key.requestId = pro_object.getString(currentDynamicKey);
                          fetchrecursUserData.add(approvaldto_Key);
                      }

                  }

              }
        catch (JSONException e) {
            e.printStackTrace(); 
            }

          return  fetchrecursUserData;

    }

答案 3 :(得分:0)

您可以尝试以下代码

String serial= jsonObject.getJSONObject("response").getString("serialNumber");

JSONObject json;
try {
    json = new JSONObject(buffer.toString());
    String accessToken = json.getString("access_token");
    return accessToken;
} catch (JSONException e) {
    Log.e("Podcast", "There was an error", e);
}