Java JsonObjectBuilder adicionando ‘metadados’ extras quando adicionado como filho ao JsonObjectBuilder

Eu tenho um JsonObjectBuilder que constrói minha resposta.

Eu tenho um loop for que faz um loop de 7 vezes, durante cada iteração ele cria um novo JsonObjectBuilder, adiciona pares de chave / valor e, em seguida, essa instância de JsonObjectBuilder é adicionada ao construtor pai para minha resposta.

Pelo que entendi, este método deve construir 7 JsonObjects nesteds no meu object de resposta.

private void addStoreHoursResponse(Map response, AppConfigHelper configHelper) throws IOException { final String OPEN = "open"; final String CLOSE = "close"; final String NOTES = "notes"; JsonObject storeHours = configHelper.getStoreHours(); Calendar now = DateUtils.getEasternTimeZoneCalendar(); now.set(Calendar.SECOND, 0); now.set(Calendar.MILLISECOND, 0); JsonObjectBuilder responseBuilder = Json.createObjectBuilder(); String open, close, notes; for (int i = 0; i < 7; i++) { JsonObjectBuilder hoursBuilder = Json.createObjectBuilder(); HoursKey hoursKey = HoursKey.getHoursKey(now); JsonObject hours = storeHours.getJsonObject(hoursKey.toString()); open = hours.isNull(OPEN) ? null : hours.getString(OPEN); close = hours.isNull(CLOSE) ? null : hours.getString(CLOSE); notes = hours.isNull(NOTES) ? null : hours.getString(NOTES); if (open == null || close == null) { hoursBuilder.add(OPEN, JsonValue.NULL); hoursBuilder.add(CLOSE, JsonValue.NULL); hoursBuilder.add(NOTES, JsonValue.NULL); } else { hoursBuilder.add(OPEN, DateUtils.getIsoString(setCalendarTime(now, open))); hoursBuilder.add(CLOSE, DateUtils.getIsoString(setCalendarTime(now, close))); hoursBuilder.add(NOTES, notes); } responseBuilder.add(DateUtils.getIsoString(now), hoursBuilder); now.add(Calendar.DAY_OF_MONTH, 1); } response.put(STORE_HOURS, responseBuilder.build()); } private Calendar setCalendarTime(Calendar calendar, String time) { String[] timeArray = time.split(":"); int hour = Integer.parseInt(timeArray[0]); int minute = Integer.parseInt(timeArray[1]); calendar.set(Calendar.HOUR_OF_DAY, hour); calendar.set(Calendar.MINUTE, minute); return calendar; } 

Meu JsonResponse tem os 7 JsonObjects, mas eles devem se parecer com o seguinte …

 "open" : ISO time string, "close" : ISO time string, "notes" : String value 

Estou recebendo isso como resultado, o que estou fazendo errado?

insira a descrição da imagem aqui