Reputation: 1
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
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
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
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