我有一个名为Product的类,它有一个名为id的类型为long的属性。下面是班级
public class Product {
private long id;
}
id的值超出了javascript可以处理的值。看到以下链接后我才意识到这一点
Parse json in javascript - long numbers get rounded
我不想在域类中将字段声明为String。但是我想对RestEasy说它必须在json响应中将值作为字符串发送。
我该怎么做?我不想使用任何第三方API。是否有可能在RestEasy。我已经阅读了文档,但没有找到任何此类注释,或者可能是我没有正确浏览文档。
任何人都可以帮忙。提前全部谢谢。
答案 0 :(得分:1)
如果你使用Jackson作为JSON Serializer,你可以扩展JacksonJsonProvider:
@Provider
public class JsonProvider extends org.codehaus.jackson.JacksonJsonProvider {
public JsonProvider() {
ObjectMapper objectMapper = locateMapper(ObjectMapper.class, MediaType.APPLICATION_JSON_TYPE);
objectMapper.configure(org.codehaus.jackson.JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS, true);
}
}
如果您使用Jettison,可以register a custom XmlAdapter:
public class LongAdapter extends XmlAdapter<String, Long> {
@Override
public String marshal(Long id) throws Exception {
if (id == null) {
return "";
}
return id.toString();
}
@Override
public Long unmarshal(String id) throws Exception {
return Long.parseLong(id);
}
}