【发布时间】:2015-09-15 09:04:35
【问题描述】:
我正在努力将从 Primefaces PickList 生成的转换为 JSON。
Gson gson = new Gson();
System.out.println(gameTaskHotspots.getTarget().toString());
Type type = new TypeToken<List<GameTaskHotspot>>(){}.getType();
if(gameTaskHotspots.getTarget().size() > 0){
List<GameTaskHotspot> list = gameTaskHotspots.getTarget();
selectedTask.input = gson.toJson(list);
}
System.out.println(selectedTask.input);
它在 JSON 字符串中输出 bean 名称,即
第一个输出是
[co.beek.pano.model.beans.GameTaskHotspot@4697b22e, co.beek.pano.model.beans.GameTaskHotspot@2b7ab42b, co.beek.pano.model.beans.GameTaskHotspot@344f3665]
第二个输出是
["co.beek.pano.model.beans.GameTaskHotspot@4697b22e","co.beek.pano.model.beans.GameTaskHotspot@2b7ab42b","co.beek.pano.model.beans.GameTaskHotspot@344f3665"]
就像它没有正确读取对象一样。我尝试使用该类型为 Gson 提供对象,但出现此错误:
javax.el.ELException: /views/guide/admin.xhtml @246,147 actionListener="#{GuideViewAdminController.saveSelectedTask()}": java.lang.IllegalArgumentException:无法设置 java.lang.String 字段 co.beek.pano.model.beans.GameTaskHotspot.id 到 java.lang.String
顺便说一句,我使用它来将 Json 转换为对象列表,效果很好
GameTaskHotspot[] existing = gson.fromJson(type == 0 ? selectedTask.input : selectedTask.output, GameTaskHotspot[].class);
【问题讨论】:
标签: java json jsf primefaces