Gson问题并将列表转换为JSON

时间:2015-09-15 09:04:36

标签: java json jsf primefaces

我正在努力将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.E​​LException:/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);

1 个答案:

答案 0 :(得分:-1)

我不得不使用转换器将对象转换为JSON

How to write a custom converter for <p:pickList>

将此添加到PickList工作。