0

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}
Nisarg
  • 1,358
  • 14
  • 30
Sanay Devi
  • 1
  • 1
  • 5
  • 4
    First; Format your code, I'm scratching my eyes out. Second; Did you even search for this? There are millions of questions, articles and tutorials for this: http://stackoverflow.com/questions/9605913/how-to-parse-json-in-android – 0xDEADC0DE Jul 15 '16 at 07:00

3 Answers3

1

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

Onkar Nene
  • 1,359
  • 1
  • 17
  • 23
1
        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();
        }
Android Surya
  • 544
  • 3
  • 17
0

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.

FrancescoAzzola
  • 2,666
  • 2
  • 15
  • 22