Store JSON objects in a HashMap… here is a solution to the problem.
Store JSON objects in a HashMap
I’m below jsonResponse.
In each response, the key and value change.
I want to store count and previousCountDay, keys and values in HashMap.
JSON response:
{
"count": {
"2018-03-28 18": 55,
"2018-03-28 19": 48,
"2018-03-28 20": 41,
"2018-03-28 21": 31,
"2018-03-28 22": 32,
"2018-03-28 23": 26,
"2018-03-29 00": 20,
"2018-03-29 01": 16,
"2018-03-29 02": 12,
"2018-03-29 03": 0
},
"previousCountDay": {
"2018-03-27 18": 40,
"2018-03-27 19": 59,
"2018-03-27 20": 53,
"2018-03-27 21": 48,
"2018-03-27 22": 36,
"2018-03-27 23": 40,
"2018-03-28 00": 37,
"2018-03-28 01": 14,
"2018-03-28 02": 29,
"2018-03-28 03": 1
},
"noOfIntervals": 10,
"range": [
"18",
"19",
"20",
"21",
"22",
"23",
"00",
"01",
"02",
"03"
]
}
By using GSON, I get the JSON
response, but I only store the range because it comes from the JSON array, and with the range I get the size of the count
& previousCountDay
.
Here is my Activity class:
private void JsonRequestOrderVelocity(String dmhw) {
utils.showDialog();
String url = Constants.VELOCITY_API;
Log.e("URL", "" + url);
JsonObjectRequest request = new JsonObjectRequest(url, null,
response -> {
Log.e("onResponse",""+response);
try {
Gson gson = new Gson();
Type listType = new TypeToken<OrderVelocityPojo>() {
}.getType();
orderVelocityPojo = gson.fromJson(response.toString(), listType);
Log.e("SIZE",""+orderVelocityPojo.getRange().size());
JSONObject object = response.getJSONObject("count");
Map<String, Integer> countMap = new HashMap<String, Integer>();
store keys and values in HashMap.
for(int i=0; i<orderVelocityPojo.getRange().size(); i++){
countMap.put( );
}
} catch (Exception e) {
Log.e("Exception",""+e);
utils.hideDialog();
e.printStackTrace();
}
utils.hideDialog();
}, error -> {
Log.e("error",""+error.getMessage());
utils.hideDialog();
});
request.setRetryPolicy(new DefaultRetryPolicy(
MY_SOCKET_TIMEOUT_MS,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
AppController.getInstance(this).addToRequestQueue(request);
}
OrderVelocityPojo Pojo class:
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class OrderVelocityPojo {
@SerializedName("noOfIntervals")
@Expose
private Integer noOfIntervals;
@SerializedName("range")
@Expose
private List<String> range = null;
public Integer getNoOfIntervals() {
return noOfIntervals;
}
public void setNoOfIntervals(Integer noOfIntervals) {
this.noOfIntervals = noOfIntervals;
}
public List<String> getRange() {
return range;
}
public void setRange(List<String> range) {
this.range = range;
}
}
Solution
You can use Gson’s library for this.
You can try converting a JSON object to a hashmap. Here, you’ll provide typeToken as your json type value.
Map<String, Object> hashmap = new Gson().fromJson(
jsonString, new TypeToken<HashMap<String, Object>>() {}.getType()
);