Oi,
estou tendo customizar um JSON que é assim.
Tenho uma entidade que é o objeto que está sendo serializado:
@Entity
public class Registro implements Comparable<Registro>{
@Id @GeneratedValue
private long id;
@OneToOne
private Escala escala;
@OneToOne(cascade=CascadeType.ALL)
private IntervaloRegistro ponto;
//varios atributos...
Dentro dele tenho vários nested object. Usando o controller do VRaptor consigo incluir esses objetos no JSON:
result.use(json()).......include("escala","ponto").exclude("id").serialize();
O objeto escala que é um POJO está ok:
{"data": "04/11/2011","escala": {"id": 197,"nome": "Comercial","descricao": "asddsd","semanal": false}}
Problema está no atributo Ponto da Entidade Registro. Ela é do tipo IntervaloRegistro que tem essa estrutura:
@Entity
public class IntervaloRegistro extends Intervalo{
//é vazio mesmo
}
e a sua super-class:
Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class Intervalo {
@Id @GeneratedValue
private long id;
@OneToMany(cascade=CascadeType.ALL)
private Collection<Ponto> pontos;
repare que dentro de um Objeto, eu posso lista de objetos (no caso Ponto). Ao tentar serializar isso pelo VRaptor tive um retorno de JSON deformado:
//Console do Chrome - lançado pelo ExtJS
Uncaught Ext.Error: Unable to parse the JSON returned by the server: You're trying to decode an invalid JSON String:
//a parte que esta estranha do JSON:
{"data": "04/11/2011","escala": {"id": 197,"nome": "Comercial","descricao": "asddsd","semanal": false},"ponto": {"id": 225,"pontos": [false,
a impressao que da é que ele “cortou” o JSON bem na parte onde deveria ter um nested list no json
"ponto": {"id": 225,"pontos": [false, //Aqui seria a lista mas cortou do nada com este false
Alguem sabe o que estou errando?
PS.
Tenho duvida da parte de XSTream tb, mas gostaria de ir por partes.
Grato