массив объектов, функционирующих не так, как ожидалось

#java #android #arrays #json

Вопрос:

Я хочу создать json в следующем формате,
Как я могу добавить много объектов в один массив.

 {
Data: [
   {"dataType":"com.google.weight",
   "startDate":"2021-04-1308:00",
   "endDate":"2021-04-13",
   "Weight":"65"},

   {"dataType":"com.google.weight",
   "startDate":"2021-04-1308:00",
   "endDate":"2021-04-13",
   "Weight":"85"},

   {"dataType":"com.google.weight",
   "startDate":"2021-04-1308:00",
   "endDate":"2021-04-13",
   "Weight":"95"}
 ]
}


 

Код:

 JSONObject jsonObject = new JSONObject();
JSONObject json  = new JSONObject();

jsonObject.put("dataType", dataSet.getDataType().getName().toString());
jsonObject.put("startDate", dateFormat.format(dp.getStartTime().toString());
jsonObject.put("endDate", dateFormat.format(dp.getEndTime().toString());
jsonObject.put("Weight", dp.getValue(field).toString());

json.put("Data", jsonObject)         //this is wrong i guess. it replaces all the old values 


 

Используя приведенный выше код, я получаю следующий результат. Это означает замену всех остальных значений и печать только одного объекта. Мне нужен массив объектов. любая помощь была бы великолепна!!!

 {
Data: 
   {"dataType":"com.google.weight",
   "startDate":"2021-04-1308:00",
   "endDate":"2021-04-13",
   "Weight":"95"}
}
 

Ответ №1:

вы добавляете объект в другой объект. вот почему у тебя это есть. Вы пропустили массив

 JSONObject jsonObject = new JSONObject();
JSONObject json  = new JSONObject();

jsonObject.put("dataType", dataSet.getDataType().getName().toString());
jsonObject.put("startDate", dateFormat.format(dp.getStartTime().toString());
jsonObject.put("endDate", dateFormat.format(dp.getEndTime().toString());
jsonObject.put("Weight", dp.getValue(field).toString());

// you missed this
JSONArray jsonArray = new JSONArray();
jsonArray.put(jsonObject);

// now you put an array into an object
json.put("Data", jsonArray)
 

Ответ №2:

у вас должен быть массив var, затем добавьте каждый объект json в массив

Ответ №3:

Я думаю, вам нужен JSONArray, который будет помещен в качестве данных. Так что

 jsonArray.add(jsonObject);
 

json.put(«Данные», JSONArray);

Что-то вроде этого. Я не проверял код. Я не уверен, называется ли он JSONArray, является ли имя метода add. Но вам определенно нужен JSONArray для хранения JSONObject.