[英]converting java DTO list into JSON object
我有一個像這樣的DTO課程:
package stbet.model.dto.db;
public class UKDashboardEventDTO implements Serializable{
private Long eventId;
private String meetingCode;
private String meetingName;
private String eventTime;
private String eventCode;
private String settleStatus;
private String category;
//getters and setters here:
@Override
public String toString() {
return "eventList{" + "eventId=" + eventId + ", meetingCode=" + meetingCode + ", meetingName=" + meetingName
+ "eventTime=" + eventTime + ", eventCode=" + eventCode + ", settleStatus=" + settleStatus
+ ", category=" + category + '}';
}
}
我做了一些查詢工作,並創建了上述DTO類型的Java列表。
for(Event ev : eventList){
dto = new UKDashboardEventDTO();
// some stuff
dto.setEventCode(ev.getEventCode());
dto.setEventId(ev.getId());
dto.setEventTime(ev.getEventTime());
dto.setMeetingName(ev.getMeeting().getMeetingName());
dto.setMeetingCode(ev.getMeeting().getMeetingCode());
eventDTOList.add(dto);
}
然后,我將此列表添加到Hashmap中,然后將其隱藏到這樣的JSON對象中:
Map map = new HashMap();
map.put("eventList",eventDTOList);
現在轉換為json:
JSONObject obj = new JSONObject();
try {
obj.put("eventMap", map);
} catch (JSONException ex) {
}
out.println(obj);
out.flush();
out.close();
但是,當我從客戶端獲取此對象時,在解析或字符串化輸出而不是從Java傳遞的正確dto值時,我將獲得dto包/對象名稱列表。 我得到的是:
"{"eventMap":{"eventList":["stbet.model.dto.db.UKDashboardEventDTO@617538bb","stbet.model.dto.db.UKDashboardEventDTO@56dfaef9","stbet.model.dto.db.UKDashboardEventDTO@775889fd","stbet.model.dto.db.UKDashboardEventDTO@55cb7e41","stbet.model.dto.db.UKDashboardEventDTO@22ce0968","stbet.model.dto.db.UKDashboardEventDTO@4cb9cb2"]}}"
您能否讓我知道如何在沒有Java包名稱的情況下獲取從Java設置到客戶端json的dto值。
您應該覆蓋DTO上的toString字段,以打印出所有單個字段值。 當您執行out時,將調用此toString。
例如。
toString() {
// this method should list out all the attributes.
}
您應該使用GSONBuilder創建gson。 示例: Gson:如何在沒有注釋的情況下從序列化中排除特定字段
這也是使用GSON的帖子
首先,您同時使用JSON和GSON庫,JSON one中存在JSONException,而JSONException
存在Expose
批注。 請確保不要混用它們,因為我不會按預期工作。
其次,來自Expose文檔
指示此成員的注釋應公開以進行JSON序列化或反序列化。
除非您使用GsonBuilder構建Gson並調用GsonBuilder.excludeFieldsWithoutExposeAnnotation()方法,否則此注釋無效。
最后,我可以根據您的建議@Trynkiewicz Mariusz和@Paul John進行修復。 我所做的是:1.刪除@Expose注釋2.覆蓋了toString(){...}方法。 3.刪除地圖實現並使用一個列表。 4.使用gson.toJson(eventList);
這解決了問題,現在的輸出是:
[{
“ eventId”:167804,“ meetingCode”:“ V5PGB”,“ meetingName”:“ SprintValley”,“ eventTime”:“ 15:38:00”,“ eventCode”:“ 10:08:00”,“ category”: “ HR”},{
“ eventId”:167805,“ meetingCode”:“ V5PGB”,“ meetingName”:“ SprintValley”,“ eventTime”:“ 15:50:00”,“ eventCode”:“ 10:20:00”,“ category”: “ HR”},..]
再次感謝你們...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.