从 JSON 文件中获取值和名称

Get values and names names from JSON file

我的 json 回复:

    {
    "Countries": [

        {

                "Country": "China",
                "Alpha2": "CN",
                "Alpha3": "CHN",

                "numbers": {
                    "Jon": "100",
                    "Mat": "200",
                    "SAM": "300"


                }
        },
         {

                "Country": "Italy",
                "Alpha2": "IT",
                "Alpha3": "ITA",

                "numbers": {
                    "Benny": "400",
                    "Jack": "500"


                }
         }

    ]
}

我的代码:

for (int i = 0; i < m_jArry.length(); i++) {
            JSONObject jo_inside = m_jArry.getJSONObject(i);

            if (jo_inside.getString("Country").equals("Italy"))
            {
                Log.d("DTAG",jo_inside.getString("Country"));
                Log.d("DTAG",jo_inside.getString("Alpha2"));
                Log.d("DTAG", jo_inside.getString("Alpha3"));

                JSONObject jo_inside2 = jo_inside.getJSONObject("numbers");
                Log.d("DTAG", "Size: "+jo_inside2.length());

                for (int j=0;j<jo_inside2.length();j++)
                {
                    //???
                }
            }

如何获取值的名称和他的值? 对于这个例子,我需要 Benny 400,Jack 500

您可以使用 json.keys 获取所有密钥,在您的情况下尝试使用以下代码。

  Iterator<String> iter = jo_inside2.keys();
  while (iter.hasNext()) {
    String key = iter.next();
    try {
        Object value = jo_inside2.get(key);
    } catch (JSONException e) {
        //exception
    }
  }
 if (jo_inside.getString("Country").equals("Italy"))
            {
                Log.d("DTAG",jo_inside.getString("Country"));
                Log.d("DTAG",jo_inside.getString("Alpha2"));
                Log.d("DTAG", jo_inside.getString("Alpha3"));

                JSONObject jo_inside2 = jo_inside.getJSONObject("numbers");
                Log.d("DTAG", "Size: "+jo_inside2.length());

                for (int j=0;j<jo_inside2.length();j++)
                {
                    Iterator<?> keys = jo_inside2.keys();

                while( keys.hasNext() ) 
                  {
                   String key = (String)keys.next();
                    if ( jo_inside2.get(key) instanceof JSONObject ) 
                     {
                           Object value = jo_inside2.get(key);
                     }
                   }
                  }
            }

// 从 JSONObj 获取所有键

    Iterator<String> iterator = jo_inside2.keys();
      while (iterator.hasNext()) {
        String key = iterator.next();
        Log.i("TAG","key:"+key +"--Value::"+categoryJSONObj.optString(key);

  }
    for(Iterator iterator =  jo_inside2.keys(); iterator.hasNext();) {
       String key = (String) iterator.next();
       System.out.println(key+" - "+jo_inside2.get(key));

      //Log.i("TAG",key +" - "+jo_inside2.get(key));
     }