Prezados, tenho o seguinte codigo em um metodo main qualquer:
List<Amount> amounts = // populo a lista
XStream xs = new XStream(new JettisonMappedXmlDriver());
xs.aliasSystemAttribute(null, "class");
xs.aliasSystemAttribute(null, "resolves-to");
xs.setMode(XStream.NO_REFERENCES);
xs.autodetectAnnotations(true);
String get = xs.toXML(amounts);
meu json retornado:
{
"list": [
{
"amount": [
{
"amount": 100,
"type": {
"id": 1,
"title": "dano moral"
}
},
{
"amount": 200,
"type": {
"id": 1,
"title": "dano moral"
}
}
]
}
]
}
tudo perfeito até então...
Porém quando populo a lista da mesma maneira num controller:
@Get("/urlAki")
public void getAmounts(Task task, ObligationToPay obligationToPay) {
List<Amount> amounts = // populo do mesmo jeito
result.use(Results.json()).from(amounts).include("type").serialize();
}
o meu json retornado é:
[code]
{
"list": [
{
"br.com.fourdata.model.cco.Amount": [
{
"amount": 100,
"type": {
"id": 1,
"title": "dano moral"
}
},
{
"amount": 200,
"type": {
"id": 1,
"title": "dano moral"
}
}
]
}
]
}
Notem que ele colocou o nome qualificado. Alterando o comportamento padrao, como chamado no metodo main. Cabe salientar que ja criei classe que customiza a criação do Xstream
@PrototypeScoped
@Component
public class CustomXStreamBuilder extends XStreamBuilderImpl {
public CustomXStreamBuilder(XStreamConverters converters, TypeNameExtractor extractor) {
super(converters, extractor);
}
public XStream configure(XStream xstream) {
xstream = new XStream(new JettisonMappedXmlDriver());
xstream.aliasSystemAttribute(null, "class");
xstream.aliasSystemAttribute(null, "resolves-to");
xstream.setMode(XStream.NO_REFERENCES);
xstream.autodetectAnnotations(true);
super.configure(xstream);
return xstream;
}
}
existe uma maneira de nao sobreescrever o comportamento?
abrasssss
