Java 我可以用Jersey(和MOXy)发送对象数组吗?
我想向服务器发送一个Java 我可以用Jersey(和MOXy)发送对象数组吗?,java,google-app-engine,jaxb,jersey,moxy,Java,Google App Engine,Jaxb,Jersey,Moxy,我想向服务器发送一个Match数组。这是Match.java: @XmlRootElement public class Match { public enum State { Updated, Synced }; @XmlElement public int matchId; @XmlElement public int timeFrom; @XmlElement public int timeTo; @XmlElement public MatchConfig config;
Match
数组。这是Match.java:
@XmlRootElement
public class Match {
public enum State {
Updated, Synced
};
@XmlElement
public int matchId;
@XmlElement
public int timeFrom;
@XmlElement
public int timeTo;
@XmlElement
public MatchConfig config; // can be null
public State state;
public Match() {
}
}
但是,当我发送数组时,它会告诉我:
警告:/api/match
java.lang.ClassCastException:test.rest.Match不能转换为javax.xml.bi
nd.JAXBElement
为什么会发生这种情况
我的Servlet方法如下所示
@POST
@Path(MATCH_PATH)
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Match[] syncMatches(Match[] matches) {
System.out.println("received matches!");
return new Match[]{new Match()};
}
顺便说一句,将数组从服务器返回到客户机是可行的,同时将单个匹配对象发送到服务器也是可行的。
典型的服务器json输出是:[{“matchId”:12,“timeFrom”:23,“timeTo”:0}]
。
我的客户机发送的是这样的:
[{“matchId”:-1,“timeTo”:-1,“timeFrom”:265}]
这是MOXy的MOXyJsonProvider
类中存在的问题,EclipseLink 2.5.1修复了这个问题
已解决问题的链接