That is because in the accumulate
method,
Object object = this.opt(key); //gets the key value. Null in your case.
if (object == null) {
this.put(key,
value instanceof JSONArray ? new JSONArray().put(value) : value);
}
This is as per the API which clearly says (for the accumulate
method) -
Accumulate values under a key. It is similar to the put method except
that if there is already an object stored under the key then a
JSONArray is stored under the key to hold all of the accumulated
values. If there is already a JSONArray, then the new value is
appended to it. In contrast, the put method replaces the previous
value. If only one value is accumulated that is not a JSONArray, then
the result will be the same as using put. But if multiple values are
accumulated, then the result will be like append.
You can use put()
as mentioned in the other answer, for your desired result.