【问题标题】:Accessing json contents in android [duplicate]在android中访问json内容[重复]
【发布时间】:2012-10-16 09:16:01
【问题描述】:

可能重复:
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
}

【问题讨论】:

  • @KristopherMicinski 完整阅读了 OP 的问题。他在解析动态键时遇到问题。
  • 使用gson解析进行解析,对你来说会更容易。这里是链接javacodegeeks.com/2011/01/…
  • @PareshMayani 在投票结束之前通读了一遍。
  • @PareshMayani 感谢您的信任。现在你可以继续你的工作了。不过,如果您认为自己擅长编辑,为什么不做志愿者,而是批评他人和他们的努力。

标签: android json


【解决方案1】:

这是我发现获取 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) );

                }
              }

【讨论】:

    【解决方案2】:

    你可以试试这个!!

    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】:

      你可以用这个

      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;
      }
      

      【讨论】:

        【解决方案4】:

        你可以试试下面的代码

        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);
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-01-30
          • 1970-01-01
          • 2021-12-08
          • 2016-10-13
          • 1970-01-01
          • 2012-11-23
          • 2018-07-02
          • 1970-01-01
          相关资源
          最近更新 更多