Atul Dhanuka
Atul Dhanuka

Reputation: 1463

Read the JSON response in Android

I am getting below JSON response and I have to store both the data in spinner but when I select Alabama the "AL" in toast message should be used. How can I do this?

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

Upvotes: 0

Views: 622

Answers (3)

PEHLAJ
PEHLAJ

Reputation: 10126

Try

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);
}

Upvotes: 1

Pratik Vyas
Pratik Vyas

Reputation: 654

Hello Try this if it helps

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) {

    }
}

Upvotes: 1

Ratilal Chopda
Ratilal Chopda

Reputation: 4220

Try this my friend

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);
            }
        }

Upvotes: 1

Related Questions