Vraptor Serialização JSON com herança

13 respostas
renanreismartins

Prezados,

estou tentando serializar uma classe B que estende da classe A.

Tudo acontece normalmente, porém no meu json só são recuperados campos da classe B, ou seja, campos da classe A não são serializados usando:

result.use(Results.json()).withoutRoot().from(objetoDaClasseA).serialize();

existe alguma maneira de fazer isso sem usar recursive()?

abrassss

13 Respostas

antonioedirane

Será que esse tópico ajuda ?

http://www.guj.com.br/java/254273-bug-serializacao-vraptor-34—heranca

Lucas_Cavalcanti

a gente corrigiu isso já no VRaptor, mas não foi lançado ainda…

se quiser posso gerar um snapshot.

renanreismartins

se puder e não for gerar mto trampo lucas, eu agradeço.

abrasss

renanreismartins

se gerar, por favor me passa o link ou instruções de como baixar. abrasss

Lucas_Cavalcanti

se vc não usa maven/ivy/gradle ou coisa do tipo:

https://oss.sonatype.org/content/repositories/snapshots/br/com/caelum/vraptor/3.4.1-SNAPSHOT/vraptor-3.4.1-20120229.150426-1.jar

se usa, adicione o repositório de snapshots
https://oss.sonatype.org/content/repositories/snapshots

br.com.caelum
vraptor
3.4.1-SNAPSHOT

[]'s

renanreismartins

opa, obrigado lucas, estou com maven. Consegui baixar.

mas o problema persiste, Será que é porque estou herdando de uma classe abstrata?

edit:
mesmo com a classe pai concreta nao deu certo

abrassss

Lucas_Cavalcanti

dá uma olhada no log de inicialização… ele apareceu como VRAptor 3.4.1-SNAPSHOT?

esse problema deveria estar corrigido…

esses campos da classe A que vc está falando, são primitivos (números, datas, String) ou são outras classes?

renanreismartins

apareceu VRAptor 3.4.1-SNAPSHOT

sao outras classes, tipos que eu criei.

porém NÃO são coleções, deveriam ser serializadas ou estou enganado?

abrass

Lucas_Cavalcanti

se são outras classes, o VRaptor não serializa por padrão mesmo, vc precisa dar includes nos atributos, ou usar o recursive();

por padrão só serializa números, datas e string.

renanreismartins

Oi Lucas, esse comportamento de serializar primitivos da classe pai já funcionava antes mesmo do snapshot.

vc tem razao, está na doc, confundi, achei que ele não serializava apenas coleções.

então estou fazendo

result.use(Results.json()).withoutRoot().from(task).include("taskType").serialize();

apesar de ter a associação na minha class Task:

@ManyToOne
@NotNull
private TaskType taskType; //getter

recebo a exceção java.lang.IllegalArgumentException: Field path taskType doesn’t exist

estou cometendo algum erro?

abrasss

Lucas_Cavalcanti

esse IllegalArgument foi corrigido no snapshot. Tinha um bug que não conseguia incluir campos da classe pai

renanreismartins

Excelente. Foi corrigido mesmo.

Muito obrigado pela atenção.

Creio que faz sentido na serialização, serializar todos os atributos que não são collection.

Vou estudar como fazer isso e posto.

abrassss

J

Lucas Cavalcanti:
se são outras classes, o VRaptor não serializa por padrão mesmo, vc precisa dar includes nos atributos, ou usar o recursive();

por padrão só serializa números, datas e string.

Post antigo, mas tenho que comentar:

Puuutz Lucas tu salva minha vida sem saber!!! hauhauaua

Criado 28 de fevereiro de 2012
Ultima resposta 12 de dez. de 2012
Respostas 13
Participantes 4