无法为接口java.io.Serializable调用no-args构造函数

时间:2017-06-07 10:54:11

标签: java json web-services gson liferay

我正在尝试调用一个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构造函数。

请帮助

1 个答案:

答案 0 :(得分:0)

问题是因为Serializable类没有任何参数的预构建,所以不应该将它用于map

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

如果你想要你可以尝试这个技巧,它应该工作,但让我知道

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

private Map<String, Myclass > _attributes;
  

我不确定它是否适用于您的目的,请尝试并让我知道