如何在没有 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 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有JSON.NET库的情况下解析JSON?

如何在没有密钥的情况下解析 JSON 文件?

Ajax 将带有两个数组的 JSON 对象发送到一个 servlet 并在没有 jQuery 的情况下在 java servlet 中解析

如何在没有目标c的键的情况下解析json第一个对象?

如何在没有外部递归函数的情况下解析多个嵌套的 JSON 键?

如何在没有 SparkSQL 的情况下使用 fastxml 解析 Spark 中的 JSON?