Java JsonObjectBuilder添加额外的';元数据';作为子对象添加到JsonObjectBuilder时
我有一个JsonObjectBuilder构建我的响应 我有一个for循环,循环7次,在每次迭代期间,它构建一个新的JsonObjectBuilder,添加键/值对,然后将这个JsonObjectBuilder实例添加到父构建器中以获得响应 据我所知,这个方法应该在我的响应对象中构建7个嵌套的JSONObjectJava JsonObjectBuilder添加额外的';元数据';作为子对象添加到JsonObjectBuilder时,java,json,glassfish,jsonobject,Java,Json,Glassfish,Jsonobject,我有一个JsonObjectBuilder构建我的响应 我有一个for循环,循环7次,在每次迭代期间,它构建一个新的JsonObjectBuilder,添加键/值对,然后将这个JsonObjectBuilder实例添加到父构建器中以获得响应 据我所知,这个方法应该在我的响应对象中构建7个嵌套的JSONObject private void addStoreHoursResponse(Map<String,Object> response, AppConfigHelper config
private void addStoreHoursResponse(Map<String,Object> 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;
}
我得到了这个结果,我做错了什么
是否确实要添加生成器?您不想实际构建JSON对象并添加该对象吗?@immibis我尝试用“hoursBuilder.build()”替换构建器,但得到了相同的响应。@hitch.united我面临着完全相同的问题。你解决问题了吗?已经三年了,但是@hitch.united你找到答案了吗?
"open" : ISO time string,
"close" : ISO time string,
"notes" : String value