Android getString()返回null

Android getString()返回null,android,Android,我有一个JSONObject,它的值如下: { "Success": true, "City": { "1": "noida", "2": "Delhi", "3": "Kanpur", "4": "Gurgaon", "5": "Mumbai", "7": "Noida", "8": "NEWYORK", "9": "Patna" } } 我

我有一个JSONObject,它的值如下:

{
    "Success": true,
    "City": {
        "1": "noida",
        "2": "Delhi",
        "3": "Kanpur",
        "4": "Gurgaon",
        "5": "Mumbai",
        "7": "Noida",
        "8": "NEWYORK",
        "9": "Patna"
    }
}
我对每个值都有一个键值,但对键“6”没有任何值。所以它返回“6没有值”异常。我正试图通过使用此代码删除此项,但失败。。。请记住,城市将以字符串[]的形式呈现在微调器中

代码如下:

JSONObject jsonCities = jsonObject.getJSONObject("City");
                        int len = jsonCities.length();
                        Log.i("Length of jsonCities is :", ""+len);
                        for(int i=1;i<=len;i++)
                        {    
                            if(jsonCities.get(""+i)==null)
                        {
                                Log.i("NULL VALUE", "NULL VALUE");
                                continue;
                        }
                            else
                        {
                            Log.i("Cities :",""+jsonCities.getString(""+i));
                            cities_hashmap.put(""+i, ""+jsonCities.getString(""+i));
                            Log.i("cities_hashmap", ""+cities_hashmap);
                        }

                    }

                    cities = new String[cities_hashmap.size()];

                    for(int j=1;j<=cities_hashmap.size();j++)
                    {
                        Log.i("CITY IS :", cities_hashmap.get(""+j));

                        cities[j-1] = cities_hashmap.get(""+j);
                        Log.i("City Array in String form is :", ""+cities);

                    }


context.runOnUiThread(new Runnable() {

                            public void run() {
                                // TODO Auto-generated method stub

                                ArrayAdapter<String> adapter = new ArrayAdapter<String>(Registration.this, android.R.layout.simple_spinner_item, cities);
                                country.setAdapter(adapter);

                            }
                        });
JSONObject jsonCities=JSONObject.getJSONObject(“城市”);
int len=jsonCities.length();
Log.i(“jsonCities的长度为:,”+len);
对于(int i=1;i只需这样使用:

String value = jsonCities.getString(Integer.toString(i));

您可以使用JsonObject的has()方法找到该键是否可用,如果找到该键,则返回true,否则返回false

if(jsonCities.has(""+i)){
   // do the thing
}
检查此链接中的更多方法


跳过6as

    for(int i=1;i<=len;i++)
    {    
          if(i == 6 )
          {
               i += 1;
          }
          if(jsonCities.get(""+i)==null)
          {
               Log.i("NULL VALUE", "NULL VALUE");
               continue;
          }
          else
          {
               Log.i("Cities :",""+jsonCities.getString(""+i));
               cities_hashmap.put(""+i, ""+jsonCities.getString(""+i));
               Log.i("cities_hashmap", ""+cities_hashmap);
          }
          ...
          ...

for(int i=1;i您可以更改此“for”循环

for(int i=1;i<=len;i++)

如何获取这些键的相关值我有一个hashmap。hashmap的值在spinner中使用。我如何识别相应的键,选择哪个值?在获得键后,只需输入“cities\u hashmap.put(key,jsonCities.getString(key));”您完成了。这不是固定的,先生…如果我从另一个微调器中选择不同的值,那么第一条记录可能为空…此值取决于另一个微调器我有一个名为countries的微调器…根据国家的选择…相应的城市正在从服务器获取。总之,先生,,,,我已经获得了所有的密钥和c对应的值。现在我在hashmap中添加了这些键值对…现在的要求是通过传递字符串[]将这些值放入微调器。只需从字符串[]中获取键并解析JSON数组,这对您来说很容易。因为现在您知道hashmap和字符串[]中的所有键,所以从那里获取并解析JSON数组。
Iterator it = jsonCities.keys();
while(it.hasNext())
{
    String key = it.next().toString();
    ...
}