aneira correta de analisar objetos JSON contendo matrizes em Java Servlets (com Gson, por exempl

Sei que esse é um tópico muito comentado, mas ainda não consegui encontrar uma resposta correta e clara para o meu problema específic

Eu tenho um JSON que se parece com isso:

var myData = {  "gameID" : gameID,
                "nrOfPlayers" : 2,
                "playerUIDs" : [123, 124]
            };

A pergunta que tenho é exatamente qual é a maneira correta (ou melhor, em termos de estilo) para analisar isso em um servlet Java (usando o GSON, por exemplo)? Primeiro, envio este JSON para o servidor usando o método jQuery ajax como este:

jQuery.ajax({
        url : path,
        data : myData,
        success : successFunction,
        error : function(data) {
            console.log("Error: ", data);
        }  ,
        type : "post",
        timeout : 30000
    });

gora, no servlet, aprendi que deveria poder analisar esse JSON assi

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Gson gson = new Gson();

        String gameID = gson.fromJson(request.getParameter("gameID"), String.class);
        String nrOfPlayers = gson.fromJson(request.getParameter("nrOfPlayers"), String.class);
        String[] playerUIDs = gson.fromJson(request.getParameter("playerUIDs"), String[].class);

        log.info(gameID);
        log.info(nrOfPlayers);
        log.info(playerUIDs[0] +" "+ playerUIDs[1]);
}

Mas a variável playerUIDs É NULL e, é claro, playerUIDs [0] lança uma exceção!

Digging mais profundo, descobri que, ao passar pelos nomes dos parâmetros de solicitação, ele continha umparâmetro chamado "playerUIDs []" com ovalor de apenas 123 (o primeiro int na matriz). Isso foi estranho, porque eu não parecia capaz de acessar os próximos valore

Em seguida, li que os objetos JSON deveriam ser especificados antes do POST, então adicionei JSON.stringify (myData), mas agora os nomes dos parâmetros de solicitação somentecontains ONE name que era o próprio objeto JSON em um estado stringificado:

INFO: Parameter name = {"gameID":"b6a51aabb8364b04bce676eafde1bc87","nrOfPlayers":2,"playerUIDs":[123,124]}

A única maneira de fazer isso funcionar foi criando uma classe interna:

class GameStart {
    protected String gameID;
    protected int nrOfPlayers;
    protected int[] playerUIDs;
}

E analisando o JSON a partir do nome do parâmetro request, assim:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        Gson gson = new Gson();
        Enumeration en = request.getParameterNames();
        GameStart start = null;
        while (en.hasMoreElements()) {
            start = gson.fromJson((String) en.nextElement(), GameStart.class);
        }
        log.info(start.gameID);
        log.info(String.valueOf(start.nrOfPlayers));
        log.info(start.playerUIDs[0] +" "+ start.playerUIDs[1]);
}

Agora, todos os valores estão lá, mas isso parece mais um hack (lendo JSON do nome do parâmetro de solicitação) do que uma solução elegante, então pensei em perguntar a vocês qual seria exatamente a maneira "correta" de fazer isso? Estou perdendo algo óbvio?

Desde já, obrigado

questionAnswers(6)

yourAnswerToTheQuestion