2015-09-28 6 views
1

Я изучаю веб-сайты, и мой webapp использует jsr 356 library. Я следил за учебниками, и я могу кодировать/декодировать POJO, однако я не могу найти примеры того, как сериализовать массивы или коллекции в JSON.Кодирование коллекции в json array в jsr 356

Это то, что я делаю, чтобы закодировать мои данные:

@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> не достаточно.