2017-05-26 73 views
0

我得到的JSON响应低于我必须在微调器中存储这两个数据,但是当我选择阿拉巴马州的阿拉巴马州时,应该会出现“AL”。我能怎么做?阅读Android中的JSON响应

{ 
    "status" : "success", 
    "data" : { 
     "AL" : "Alabama", 
     "AK" : "Alaska" 
    } 
} 

预先感谢您

+0

你可以发布你的代码并解释你在哪里发现阻止你的问题? – Juan

+0

使用自定义适配器。 检查此链接,这可能会帮助你https://stackoverflow.com/questions/35983176/how-to-create-spinner-list-using-customadapter-in-android –

+0

看看这个答案解析JSON:https:/ /stackoverflow.com/a/31993218/3050249 –

回答

1

尝试

JSONObject jsonObject = new JSONObject(jsonString); 
String status = jsonObject.getString("status"); 
List<String> data = new ArrayList<String>(); 
JSONArray array = jsonObject.getJSONArray("data"); 
Iterator<String> keys = jsonObject.keys(); 
while (keys.hasNext()) { 
    String key = keys.next(); 
    String value = jsonObject.getString(key); 
} 
1

试试这个我的朋友

JSONObject jsonObject = new JSONObject(response); 
     Iterator<String> keys = jsonObject.keys(); 
     while (keys.hasNext()) { 
      String key = keys.next(); 
      String value = jsonObject.getString(key); 
      Log.v("**********", "**********"); 
      Log.v("category key", key); 
      Log.v("category value", value); 

      String firstChar = String.valueOf(value.charAt(0)); 

      if (firstChar.equalsIgnoreCase("{")) { 
       JSONObject innerJObject = jsonObject.getJSONObject(key); 
       Iterator<String> innerkeys = innerJObject.keys(); 
       String innerkey = innerkeys.next(); 
       String innervalue = innerJObject.getString(innerkey); 
       Log.v("**********", "**********"); 
       Log.v("inner key", innerkey); 
       Log.v("inner value", innervalue); 
      } 
     } 
1

您好试试这个,如果有帮助

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { 
    List<City>cityList= new ArrayList<>(); 
    List<String> cityListName= new ArrayList<>(); 
    Spinner spnCity; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     spnCity=(Spinner)findViewById(R.id.spnCity); 
     String response="{\"status\":\"success\",\"data\":{\"AL\":\"Alabama\",\"AK\":\"Alaska\"}}"; 
     try { 
      JSONObject iObject=new JSONObject(response); 
      JSONObject data=iObject.getJSONObject("data"); 
      Iterator<String> iter = data.keys(); 
      while (iter.hasNext()) { 
       String key = iter.next(); 
       try { 
        Object value = data.get(key); 
        cityListName.add(value.toString()); 
        cityList.add(new City(key,value.toString())); 
       } catch (JSONException e) { 
       } 
      } 
      ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, cityListName); 

      // Drop down layout style - list view with radio button 
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

      // attaching data adapter to spinner 
      spnCity.setAdapter(dataAdapter); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 


    @Override 
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
     String item = adapterView.getItemAtPosition(i).toString(); 
     for (int j = 0; j < cityList.size(); j++) { 
      if(cityList.get(j).getCityName().equals(item)){ 
       Toast.makeText(adapterView.getContext(), "Selected: " + item +" "+cityList.get(j).getCityName(), Toast.LENGTH_LONG).show(); 
      } 
     } 
     // Showing selected spinner item 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> adapterView) { 

    } 
}