Olá, alguém poderia me ajudar…
public void xxx(String name) {
Plan plan = planDAO.listName(name, Currency.EUR);
//System.out.println(">>>>>>>>>>>>>: "+plan.getPrices());
//>>>>>>>>>>>>>: [Price [id=24, price=395.0, currency=EUR], Price [id=25, price=510.0, currency=USD], Price [id=26, price=1066.0, currency=BRL]]
result.use(json()).from(plan, "XXXX")
.serialize();
}
Da forma que esta retornando json, não estou conseguindo pegar os valores da parte do Price na posição 0 no javascript.
Os dados do Price, não estão sem enviado pelo browser.
//var cartasiPlan_price = json.XXXX.prices[0].price;
tente colocar um .recursive() antes do .serialize()… se não funcionar dê include(“prices”)
Obrigado pela resposta, mas resolvi de outra forma…
result.use(json()).from(plan, "XXXX").include("prices").serialize();
mas tive que criar
package com.siter.site.infra;
import java.util.Collection;
import javax.servlet.http.HttpServletResponse;
import br.com.caelum.vraptor.interceptor.TypeNameExtractor;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.serialization.ProxyInitializer;
import br.com.caelum.vraptor.serialization.xstream.XStreamJSONSerialization;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.collections.CollectionConverter;
@Component
public class CustomJSONSerialization extends XStreamJSONSerialization {
public CustomJSONSerialization(HttpServletResponse response, TypeNameExtractor extractor, ProxyInitializer initializer) {
super(response, extractor, initializer);
}
@Override
protected XStream getXStream() {
XStream xstream = super.getXStream();
xstream.registerConverter(new CollectionConverter(xstream.getMapper()) {
@Override
@SuppressWarnings("rawtypes")
public boolean canConvert(Class type) {
return Collection.class.isAssignableFrom(type);
}
});
return xstream;
}
}