Olá Pessoal,
Boa madruga…
Eu estava enfrentando um problema de charset, somente quando fazia requisição AJAX com jQuery, usando o método da apostila da Caelum:
result.use(JSONSerialization.class).from(func).serialize();
Bom, funciona direitinho… mas sempre trazendo os famosos símbolos nas acentuações, até então achei que fosse besteira e continuei a desenvolver… Agora fui atrás da solução e ví que simplesmente não tem outra forma, a não ser criar uma classe conforme abaixo:
@Component
public class CharsetJSONSerialization extends XStreamJSONSerialization {
private final HttpServletResponse response;
protected final ProxyInitializer initializer;
protected final XStreamBuilder builder;
public CharsetJSONSerialization(HttpServletResponse response, TypeNameExtractor extractor, ProxyInitializer initializer, XStreamBuilder builder) {
super(response, extractor, initializer, builder);
this.response = response;
this.initializer = initializer;
this.builder = builder;
}
public <T> Serializer from(T object){
response.setContentType("application/json; charset=UTF-8");
return getSerializer().from(object);
}
}
Conclusão:
Não é aconselhável utilizar a classe e método do próprio framework para serializar JSON?
Isso seria uma gambi? ou será que já existe alguma solução mais elegante…
Abraços,