Sanay Devi
Sanay Devi

Reputation: 1

Parse my json in android to get particular values

This is my JSON , i only want the following pressure, max temp, min temp , humidity , temp. How do i parse it and get the following values.

String finalJSON = buffer.toString();
                JSONObject parentObject = new JSONObject(finalJSON);
                JSONArray parentArray = parentObject.getJSONArray("weather");
                List<WeatherModel> weathermodellist = new ArrayList<>();
                for (int i = 1; i < parentArray.length(); i++) {
                    JSONObject finalObject = parentArray.getJSONObject(i);
                    WeatherModel weatherModel = new WeatherModel();
                    weatherModel.setTemp((float) finalObject.getDouble("temp"));
                    weatherModel.setHumidity((float) finalObject.getDouble("humidity"));
                    weatherModel.setTemp_max((float) finalObject.getDouble("temp_max"));
                    weatherModel.setTemp_min((float) finalObject.getDouble("temp_min"));
                    weatherModel.setPressure((float) finalObject.getDouble("pressure"));
                    weathermodellist.add(weatherModel);
                }
                return weathermodellist;

This is my JSON :

{"coord":{"lon":77.22,"lat":28.67},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"base":"cmc stations","main":{"temp":300.3,"pressure":998,"humidity":88,"temp_min":299.82,"temp_max":301.15},"wind":{"speed":3.1,"deg":80},"clouds":{"all":90},"dt":1468499400,"sys":{"type":1,"id":7809,"message":0.0025,"country":"IN","sunrise":1468454578,"sunset":1468504257},"id":1273294,"name":"Delhi","cod":200}

Upvotes: 0

Views: 72

Answers (3)

FrancescoAzzola
FrancescoAzzola

Reputation: 2654

The code proposed by Surya is fine but be aware if these fields are optional. If so you can use optDouble instead of getDouble.

It seems to me you are using Openweathermap as weather provider, if so i suggest to give a look at my post so you don't have to worry to parse the json by yourself and you will find all information about how to handle weather information in json format.

Upvotes: 0

Android Surya
Android Surya

Reputation: 544

        String jsonStr="{'coord':{'lon':77.22,'lat':28.67},'weather':[{'id':500,'main':'Rain','description':'light rain','icon':'10d'}],'base':'cmc stations','main':{'temp':300.3,'pressure':998,'humidity':88,'temp_min':299.82,'temp_max':301.15},'wind':{'speed':3.1,'deg':80},'clouds':{'all':90},'dt':1468499400,'sys':{'type':1,'id':7809,'message':0.0025,'country':'IN','sunrise':1468454578,'sunset':1468504257},'id':1273294,'name':'Delhi','cod':200}";

        try {
            JSONObject jsonObj = new JSONObject(jsonStr);
            JSONObject mainJson =jsonObj.getJSONObject("main");
            double tempVal=mainJson.getDouble("temp");
            double pressureVal=mainJson.getDouble("pressure");
            double humidityVal=mainJson.getDouble("humidity");
            double temp_minVal=mainJson.getDouble("temp_min");
            double temp_maxVal=mainJson.getDouble("temp_max");

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Upvotes: 1

Onkar Nene
Onkar Nene

Reputation: 1377

Try this -

String finalJSON = buffer.toString(); 
JSONObject parentObject = new JSONObject(finalJSON); 

JSONObject main = parentObject.getJSONObject("main");

double temp = main.getDouble("temp");
double pressure= main.getDouble("pressure");
double humidity = main.getDouble("humidity");
double temp_min = main.getDouble("temp_min");
double temp_max = main.getDouble("temp_max");

Hope it will help:)

Upvotes: 1

Related Questions