Tôi đang cố gắng để serialize một proxy Java động sử dụng thư viện Jackson nhưng tôi nhận được lỗi này:Json serializing JDK động Proxy với thư viện Jackson
public interface IPlanet {
String getName();
}
Planet implements IPlanet {
private String name;
public String getName(){return name;}
public String setName(String iName){name = iName;}
}
IPlanet ip = ObjectsUtil.getProxy(IPlanet.class, p);
ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(ip);
//The proxy generation utility is implemented in this way:
/**
* Create new proxy object that give the access only to the method of the specified
* interface.
*
* @param type
* @param obj
* @return
*/
public static <T> T getProxy(Class<T> type, Object obj) {
class ProxyUtil implements InvocationHandler {
Object obj;
public ProxyUtil(Object o) {
obj = o;
}
@Override
public Object invoke(Object proxy, Method m, Object[] args) throws Throwable {
Object result = null;
result = m.invoke(obj, args);
return result;
}
}
// TODO: The suppress warning is needed cause JDK class java.lang.reflect.Proxy
// needs generics
@SuppressWarnings("unchecked")
T proxy = (T) Proxy.newProxyInstance(type.getClassLoader(), new Class[] { type },
new ProxyUtil(obj));
return proxy;
}
tôi nhận được ngoại lệ này:
Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class $Proxy11 and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.SerializationFeature.FAIL_ON_EMPTY_BEANS))
Các vấn đề có vẻ là giống nhau xảy ra khi các đối tượng được hỗ trợ hibernate được tuần tự hóa nhưng tôi không biết làm thế nào và nếu tôi có thể sử dụng mô-đun Jackson-hibernate để giải quyết vấn đề của tôi.
CẬP NHẬT: Các BUG đã được giải quyết từ Jackson 2.0.6 phát hành
Câu hỏi nhanh về 'p' ở đây - loại đó là gì? (Hành tinh?). Ngoài ra, nên 'Planet' đang thực hiện' IPlanet': nếu có, lợi ích của Proxy là gì? – StaxMan