无法调用接口java.io.Serializable的无参数构造函数

无法调用接口java.io.Serializable的无参数构造函数,java,json,web-services,gson,liferay,Java,Json,Web Services,Gson,Liferay,我试图调用一个json web服务(在Liferay中),特别是一个上传文件的方法(添加文件条目),在请求的参数中有一个对象ServiceContext(),我将这个对象参数作为json字符串发送,json web服务必须将json字符串反序列化为ServiceContext对象。 ServiceContext有一个属性: private Map\u属性 当我在该地图中输入一个条目时,例如: servicecontext.setAttribute(“fileEntryTypeId”,0) 当GS

我试图调用一个json web服务(在Liferay中),特别是一个上传文件的方法(添加文件条目),在请求的参数中有一个对象ServiceContext(),我将这个对象参数作为json字符串发送,json web服务必须将json字符串反序列化为ServiceContext对象。 ServiceContext有一个属性:

private Map\u属性

当我在该地图中输入一个条目时,例如:

servicecontext.setAttribute(“fileEntryTypeId”,0)

当GSON尝试反序列化servicecontext对象时:

    ServiceContext servicecontext = new Gson().fromJson(ServiceContext, ServiceContext.class);
他抛出异常:无法调用接口java.io.Serializable的无参数构造函数


请帮助

问题是因为Serializable类在没有任何参数的情况下不会预构建,因此不可能将其用于映射

private Map<String, Serializable> _attributes; //no
之后

private Map\u属性;
我不确定它是否适合你,试试看,让我知道

public class Myclass implements java.io.Serializable {
   public Myclass (){}
}

感谢您的快速回答,但问题是我无法更改ServiceContext类,它是在我使用的Liferay的JAR中定义的。您不需要这样做,因为通过实现Serializable类,您可以将其替换为Serializable。映射“private map_attributes;”是ServiceContext类的一个属性,所以我想如果我想做你的解决方案,我必须改变ServiceContext类,你不这么认为吗?
private Map<String, Myclass > _attributes;