如何在没有 JSON 数组的情况下解析 JSON 数据?

Posted

技术标签:

【中文标题】如何在没有 JSON 数组的情况下解析 JSON 数据?【英文标题】:How To parse JSON data without JSON array? 【发布时间】: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();
        

【问题讨论】:

【参考方案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");
    

【讨论】:

以上是关于如何在没有 JSON 数组的情况下解析 JSON 数据?的主要内容,如果未能解决你的问题,请参考以下文章