2

我正在学习 websockets,我的 webapp 正在使用jsr 356 library。我按照教程进行操作,可以对 POJO 进行编码/解码,但是我找不到有关如何将数组或集合序列化为 JSON 的示例。

这就是我对数据进行编码的方法:

@Override
public String encode(ScanPlus scan) throws EncodeException {

    JsonObject jsonObject = createJsonObject(scan);
    return jsonObject.toString();

}

private JsonObject createJsonObject(ScanPlus scan) {
    JsonObject jsonObject = Json.createObjectBuilder()
            .add("scan", scan.getCode())
            .add("creationdate", String.valueOf(scan.getCreationDate()))
            .add("username", scan.getUserName())
            .build();
    return jsonObject;
}

public String encode(ArrayList<ScanPlus> scans) throws EncodeException {

    JsonArrayBuilder jsonArray = Json.createArrayBuilder();

    for (ScanPlus scan : scans) {
        JsonObject jsonObject = createJsonObject(scan);
        jsonArray.add(jsonObject);
    }

    return jsonArray.toString();

}

这就是我将数据发送到编码器的方式:

@OnOpen
public void onOpen(Session session, @PathParam("username") String username)    {
    ...
    session.getBasicRemote().sendObject(scans);
}

这是我得到的例外:

javax.websocket.EncodeException: No encoder specified for object of class [class java.util.ArrayList]

谁能给我一个关于如何做的提示?

谢谢

4

1 回答 1

1

您需要创建Encoder<ArrayList<ScanPlus>>Encoder<ScanPlus>是不足够的..

于 2015-09-29T00:48:01.190 回答