我正在尝试调用一个json Web服务(在Liferay中),特别是一个上传文件的方法(add-file-entry),在请求的参数中有一个对象ServiceContext({{3}我将此对象param作为JSON字符串发送,并且json Web服务必须将json字符串反序列化为ServiceContext对象。 ServiceContext有一个属性:
private Map<String, Serializable> _attributes;
当我在此地图中输入一个条目,例如:
servicecontext.setAttribute("fileEntryTypeId", 0);
当GSON尝试解除对servicecontext对象的去除时:
ServiceContext servicecontext = new Gson().fromJson(ServiceContext, ServiceContext.class);
他抛出异常:无法为接口java.io.Serializable调用no-args构造函数。
请帮助
答案 0 :(得分:0)
问题是因为Serializable类没有任何参数的预构建,所以不应该将它用于map
private Map<String, Serializable> _attributes; //no
如果你想要你可以尝试这个技巧,它应该工作,但让我知道
public class Myclass implements java.io.Serializable {
public Myclass (){}
}
后
private Map<String, Myclass > _attributes;
我不确定它是否适用于您的目的,请尝试并让我知道