我使用GWTP-Rest,我需要反序列化包含ListMultimap的dto。 dto的所有元素都是反序列化的,但不是ListMultimap。低于dto的代码。 JsonAnnotation正在工作,来自正确的artifactId,它与gwt-jackson兼容。我用maven gwt-guava-jackson导入并继承了模块。
公共类GetdtoMobileResult实现ExpirableResult,DtoData {
@JsonProperty("diffusions")
private ListMultimap<Integer, Diffusion> diffusions;
private TimeInterval visibleRange;
@JsonProperty("ttl")
private long ttl;
private dtoHourRange hourRange;
GetTVGuideMobileResult() {
super();
}
public GetTVGuideMobileResult(
final ArrayListMultimap<Integer, Diffusion> diffusions,
final TimeInterval visibleRange, final long ttl, final MediamatHourRange range) {
super();
this.diffusions = diffusions;
this.visibleRange = visibleRange;
this.ttl = ttl;
this.hourRange = range;
}
@JsonIgnore
@Override
public ListMultimap<ChannelId, Diffusion> getDiffusions() {
return ArrayListMultimap.create();
}
@JsonProperty("diffusions")
public ListMultimap<Integer, Diffusion> getdiffusions()
{
return diffusions;
}
@Override
public TimeInterval getVisibleRange() {
return visibleRange;
}
@JsonProperty("ttl")
@Override
public long ttl() {
return ttl;
}
@Override
public dtoHourRange getHourRange() {
return hourRange;
}
// #### setter add to able deserialization on client side mobile. ######
@JsonProperty("diffusions")
public void setDiffusions(final ListMultimap<Integer, Diffusion> diffusions) {
this.diffusions = diffusions;
}
public void setHourRange(final dtoHourRange hourRange) {
this.hourRange = hourRange;
}
@JsonProperty("ttl")
public void setTtl(final long ttl) {
this.ttl = ttl;
}
public void setVisibleRange(final TimeInterval visibleRange) {
this.visibleRange = visibleRange;
}
}
我从服务器{“diffusions”收到正确的对象:{“...”},...}。序列化是由lib jackson-datatype-guava完成的,如果我正确理解它是由jackson-guava使用的话。实现的接口定义了对象的getter,并实现了Serializable。
我有另外一个问题,可能与他有关,我的ListMultimap使用normaly和dto作为包装整数的键,但是jackson告诉我,我的dto不支持作为map的键。我的代码:
公共类DtoId实现了Serializable {
/**
* serial version Uid
*/
private static final long serialVersionUID = -5816632906385308130L;
private int id;
DtoId() {
// for serialization
}
public DtoId(final int id) {
super();
this.id = id;
}
public int getId() {
return id;
}
public void setId(final int id) {
this.id = id;
}
@Override
public String toString() {
return Integer.toString(id);
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
return result;
}
@Override
public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
ChannelId other = (ChannelId) obj;
if (id != other.id) {
return false;
}
return true;
}
}
答案 0 :(得分:0)
好的,问题来自番石榴项目之间的不良依赖关系。我向客户提供了相同版本的番石榴,共享和服务器,现在序列化工作,对不好的问题抱歉。
继续发生第二个错误,我将在另一个页面上发布。