我得到的JSON響應低於我必須在微調器中存儲這兩個數據,但是當我選擇阿拉巴馬州的阿拉巴馬州時,應該會出現「AL」。我能怎麼做?閱讀Android中的JSON響應
{
"status" : "success",
"data" : {
"AL" : "Alabama",
"AK" : "Alaska"
}
}
預先感謝您
我得到的JSON響應低於我必須在微調器中存儲這兩個數據,但是當我選擇阿拉巴馬州的阿拉巴馬州時,應該會出現「AL」。我能怎麼做?閱讀Android中的JSON響應
{
"status" : "success",
"data" : {
"AL" : "Alabama",
"AK" : "Alaska"
}
}
預先感謝您
嘗試
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);
}
試試這個我的朋友
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);
}
}
您好試試這個,如果有幫助
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) {
}
}
你可以發佈你的代碼並解釋你在哪裏發現阻止你的問題? – Juan
使用自定義適配器。 檢查此鏈接,這可能會幫助你https://stackoverflow.com/questions/35983176/how-to-create-spinner-list-using-customadapter-in-android –
看看這個答案解析JSON:https:/ /stackoverflow.com/a/31993218/3050249 –