JSON Deserializer + Vraptor

Iniciei a pouco tempo com o Vraptor e agora travei numa questão.

Usei o jqGrid pra mostrar dados e preciso salvar o que for alterado.
Com o jQuery transformo os dados do grid no formato JSON mais ou menos
assim:

[{“habilitado”:false,“centroDeCustos.codigo”:
1,“centroDeCustos.nome”:“SEDE ADMINISTRATIVA”,“id”:1},
{“habilitado”:true,“centroDeCustos.codigo”:
2,“centroDeCustos.nome”:“FABRICA RAÇÃO - CASCAVEL”,“id”:2},
{“habilitado”:true,“centroDeCustos.codigo”:
8,“centroDeCustos.nome”:"FILIAL COMERCIAL - PORTO ALEGRE ",“id”:
3},{“habilitado”:false,“centroDeCustos.codigo”:
9,“centroDeCustos.nome”:“FILIAL COMERCIAL - COLOMBO”,“id”:4},
{“habilitado”:false,“centroDeCustos.codigo”:
10,“centroDeCustos.nome”:“INCUBATORIO OVOS - REALEZA”,“id”:5},
{“habilitado”:true,“centroDeCustos.codigo”:
11,“centroDeCustos.nome”:“INDUSTRIA FARELO E OLEO - CVEL”,“id”:6}]

daí no Controller:

       @Post
       @Path("usuario/ccustos/salvar")
       @Consumes
       public void gravarListaCCcustos(List<HabilitacaoCentroCusto>
listaCcustos) {
              // implementação
               result.redirectTo(this).formulario();
       }

No inicio ele dava um erro que tinha que ter no JSON alguma coisa do
tipo {list :[{“habilitado”:true, … etc

Fiz isso e após isso ele começou a dar erro por não saber o que é
habilitado
O “habilitado” não é um campo, apenas uma marcação que foi serializado
pro JSON no grid pro usuário selecionar ou não…
O método que gera pro jqGrid é esse:

       @Get
       @Path("usuario/listasccustos.json")
       public void buscaListaCcustos(int matricula) {
               this.result.use(json()).withoutRoot()
                               .from(habCcusto.montaListaCCFormatoGrid(matricula)).include("rows")
                               .include("rows.centroDeCustos").serialize();
       }

o médoto montaListaCCFormatoGrid e verificaCentroCustosHabilitados na
classe HabilitacaoCentroCusto

       public HabilitacaoCentroCusto montaListaCCFormatoGrid(int codigo) {
               buscaListaCentroCustos();

               verificaCentroCustosHabilitados(codigo);

               this.page = 1;
               this.total = (this.rows.size() / 10) + 1;
               this.records = this.rows.size();

               return this;
       }

       private void verificaCentroCustosHabilitados(int codigo) {
               Funcionario funcionario = funcionarioDAO.pegaPorId(codigo);
               List<CentroDeCustos> centroDeCustosHabilitados =
funcionario.getListaCentroDeCustos();
               for (ListaCentroCusto listaCentroCusto : this.rows) {
                       if
(centroDeCustosHabilitados.contains(listaCentroCusto.getCentroDeCustos()))
{
                               listaCentroCusto.habilitado = true;
                       }
               }
       }

Mais ou menos é isso… Pergunto, o que devo fazer?
Agradeço desde já…

Ricardo

Amigo, da uma olhada nesse post: http://www.guj.com.br/java/248182-jqgrid--vraptor---formatar-retorno-do-resultuse-json#1289354

Valeu gbmesso, mas meu problema é na hora do POST, do retorno dos dados ao meu controller…

pelo que eu entendi, tua duvida tá em ler o que o jqgrid passa pro controller isso?

dá uma olhada nesta documentação do jqGrid

prmNames e postData
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options

o que ele envia pro controller pode ver tbm atraves do firebug

qualquer coisa solta o grito
:wink:

Valeu… eu consegui com muito custo… fiz uma deserelizator customizado usando o GSon…