Expected NUMBER but was BEGIN_OBJECT

33 views
Skip to first unread message

Thiago Cruz

unread,
Nov 5, 2015, 11:33:59 AM11/5/15
to caelum-vraptor
O que estou fazendo errado? 

Mando no POST:
{codSetor: 108, codSubSetor: 4}

No Controller:

@Post({ "/metodoController" })
@Consumes(value = "application/json", options = WithoutRoot.class)
public void metodoController(Long codSetor, Long codSubSetor) {
                          // Não chega aqui
}

Recebo as exceções:

br.com.caelum.vraptor.view.ResultException: Unable to deserialize data
Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected NUMBER but was BEGIN_OBJECT

Rodrigo Turini

unread,
Nov 5, 2015, 11:49:23 AM11/5/15
to caelum-vraptor
Oi Thiago, tudo bem? O problema é que quando você usa o consumes dessa forma, ele espera que exista um objeto a estrutura do seu json, e não os parâmetros soltos na assinatura do método.. sabe? Ou seja, no lugar de:

public void metodoController(Long codSetor, Long codSubSetor) { ... }

seria algo como:

public void metodoController(Setor setor) { .. } // e essa classe tem os atributos codSetor e codSubSetor

Igual no exemplo do customer em nossa documentação http://www.vraptor.org/en/docs/controllers-rest/#consuming-in-other-formats

--
Você recebeu essa mensagem porque está inscrito no grupo "caelum-vraptor" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para caelum-vrapto...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para caelum-...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/caelum-vraptor.
Para mais opções, acesse https://groups.google.com/d/optout.

Thiago

unread,
Nov 5, 2015, 11:53:25 AM11/5/15
to caelum-...@googlegroups.com
Rodrigo, tudo bem?

Tem algum exemplo usando parâmetros soltos?

Rodrigo Turini

unread,
Nov 5, 2015, 3:07:35 PM11/5/15
to caelum-...@googlegroups.com
Oi Thiago, se você precisa consumir o JSON dessa forma, não tem muito como fugir de criar uma classe pra empacotar essas informações mesmo. É a partir desse tipo que você passa como parâmetro do método do controller que o VRaptor, com ajuda dos serializers, consegue popular os dados. 

Thiago Cruz

unread,
Nov 6, 2015, 7:32:27 AM11/6/15
to caelum-vraptor, rodrigo...@caelum.com.br
Rodrigo consegui aqui tirando o without root. Consegui para parâmetros simples, não para listas, criei outra thread sobre isso.
Reply all
Reply to author
Forward
0 new messages