【问题标题】:How To parse JSON data without JSON array?如何在没有 JSON 数组的情况下解析 JSON 数据?
【发布时间】:2018-06-02 20:16:51
【问题描述】:

以下是 JSON 链接

{
"AF": {
    "country_name": "Afghanistan",
    "dialling_code": "+93"
},
"AL": {
    "country_name": "Albania",
    "dialling_code": "+355"
},
"DZ": {
    "country_name": "Algeria",
    "dialling_code": "+213"
},

从上面的 JSON 链接,我尝试使用下面的代码从 JSON 中检索数据。

        try {
            jsonObject = new JSONObject(JSON_STRING);
            countryname = jsonObject.getString("country_name");
            dialingcode = jsonObject.getString("dialling_code");
            Log.d("COUNTRYNAME", countryname);
            Log.d("DIALER_CODE", dialingcode);
        } catch (JSONException e1) {
            e1.printStackTrace();
        }

【问题讨论】:

    标签: android json web-services


    【解决方案1】:

    您可以从 JSONObject 获取 Keys 并迭代键。下面是一个例子。

    private void parse(String jsonString) {
        try {
            JSONObject resObject = new JSONObject(jsonString);
            Iterator<String> iterator = resObject.keys();
            while (iterator.hasNext()) {
                String key = iterator.next();// key can be used as Country code
                JSONObject data = resObject.getJSONObject(key);
                String country_name = data.getString("country_name");
                String dialling_code = data.getString("dialling_code");
    
            }
        } catch (Exception e) {
        }
    }
    

    【讨论】:

      【解决方案2】:

      试试这个

      try {
          JSONObject jsonObject = new JSONObject("your json response");
      
              Iterator  iteratorObj = jsonObject.keys();
      
              while (iteratorObj.hasNext())
              {
                  String JsonObjCountryCode = (String)iteratorObj.next();
      
                  Log.i("Country Code key", JsonObjCountryCode);
      
                  JSONObject jo_code = jsonObject.getJSONObject(JsonObjCountryCode);
      
                  Iterator<String> keys = jo_code.keys();
                  while (keys.hasNext())
                  {
                      String key = keys.next();
                      String value = jo_code.getString(key);
                      Log.i("country_name value", value);
      
                  }
      
              }
      
      } 
      catch (JSONException e) {
         e.printStackTrace();
      }
      

      【讨论】:

        【解决方案3】:

        您可以将所有键提取到 List 或 ArrayList 中,然后循环此 ArrayList 以获取每个 JSON 键的详细信息。

            jsonObject = new JSONObject(JSON_STRING);
            Iterator keys= jsonObject .keys();
           while(keys.hasNext()) {
                String key = (String) keys.next();
                JSONObject data = resObject.getJSONObject(key);
                String country_name = data.getString("country_name");
                String dialling_code = data.getString("dialling_code");
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-23
          • 2019-11-16
          • 1970-01-01
          • 2016-08-11
          相关资源
          最近更新 更多