【问题标题】:Trouble with Gson and Converting List to JSON [duplicate]Gson 和将列表转换为 JSON 的问题 [重复]
【发布时间】: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.E​​LException: /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


【解决方案1】:

我必须使用转换器将对象转换为 JSON

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

将其添加到 PickList 有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 2016-09-05
    • 1970-01-01
    相关资源
    最近更新 更多