我正在努力将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 =&#34;#{GuideViewAdminController.saveSelectedTask()}&#34 ;: 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);
答案 0 :(得分:-1)