将集合编码为 jsr 356 中的 json 数组
Encoding collection to json array in jsr 356
我正在学习 websockets,我的 webapp 正在使用 jsr 356 library。我按照教程进行操作并且可以 encode/decode 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]
谁能告诉我怎么做?
谢谢
您需要创建Encoder<ArrayList<ScanPlus>>
; Encoder<ScanPlus>
不够..
我正在学习 websockets,我的 webapp 正在使用 jsr 356 library。我按照教程进行操作并且可以 encode/decode 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]
谁能告诉我怎么做?
谢谢
您需要创建Encoder<ArrayList<ScanPlus>>
; Encoder<ScanPlus>
不够..