To dlatego, że w metodzie accumulate
,
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);
}
To jak na API, które wyraźnie mówi (dla metody accumulate
) -
Gromadzenie wartości pod kluczem. Jest podobny do metody put z wyjątkiem , że jeśli istnieje już obiekt przechowywany pod kluczem, to pod kluczem przechowywana jest JSONArray, w celu przechowywania wszystkich zakumulowanych wartości . Jeśli istnieje już JSONArray, nowa wartość to dołączona do niego. Natomiast metoda put zastępuje poprzednią wartość . Jeśli zgromadzona jest tylko jedna wartość, która nie jest JSONArray, to wynik będzie taki sam jak przy użyciu put. Ale jeśli zgromadzono wiele wartości , wynik będzie podobny do dołączenia.
Możesz użyć put()
, jak wspomniano w drugiej odpowiedzi, dla pożądanego rezultatu.