Have a look at the examples of JSON-simple
.
It says here that you need to put the Objects one by one into the Array, using only primitive
and String
values. You may use Collections
like Map
that by themselves only contain String
or primitive
values.
JSONArray list = new JSONArray();
list.add("foo");
list.add(new Integer(100));
list.add(new Double(1000.21));
list.add(new Boolean(true));
list.add(null);
StringWriter out = new StringWriter();
list.writeJSONString(out);
So, adding your Services
is not allowed and won't work. You should add a toMap
method in it where you convert it to a Map
and fromMap
to convert it back.
Like this (in Services.java
):
public Map toMap() {
HashMap<String, String> serviceAsMap = new HashMap<>();
servicesAsMap.put("serviceName", serviceName);
servicesAsMap.put("className", this.class.getName() + ".class");
servicesAsMap.put("isEnabled", isEnabled);
// ... continue for all values
return servicesAsMap;
}
then you can use that Map
to populate your JSONArray
like this:
JSONArray servicesJSON = new JSONArray();
ArrayList<Service> servicesArray = this.getServices();
for(int i=0; i< servicesArray.size(); i++)
{
servicesJSON.add(servicesArray.get(i).toMap()); // use the toMap method here.
}
obj.put("services", servicesJSON);