Кодирование коллекции в массив json в jsr 356

Я изучаю веб-сокеты, и мое веб-приложение использует библиотеку JSR 356. Я следовал инструкциям и могу кодировать / декодировать 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]

Может ли кто-нибудь дать мне подсказку, как это сделать?

Спасибо

1 ответ

Решение

Вам нужно создать Encoder<ArrayList<ScanPlus>>; Encoder<ScanPlus> недостаточно..

Другие вопросы по тегам