我有json输入
{"subkeys":[{"1","2", "3"},{"4","5","6"},{"7","8","9"}]
我需要将其设为List < List < String > >
或List < String[] >
。
@PUT
@Path("/{key}/")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public MyResponse loadData( List<List<String>> subkeys) {
}
我收到了像
这样的错误引起:com.sun.xml.bind.v2.runtime.IllegalAnnotationsException:IllegalAnnotationExceptions的2个计数 java.util.List是一个接口,JAXB无法处理接口。 此问题与以下位置有关: 在java.util.List 私人java.util.List foobar.alkohol.register.webservice.jaxws.GetRelationsFromPersonResponse._return
答案 0 :(得分:-1)
我在这里看到的问题是由于JSON输入的格式错误,在你的情况下正确的JSON是:
{
"data" :[
{
"keys": ["123","456","789"],
"subkeys": [
["1", "2", "3"],
["1", "2", "3"],
["1", "2", "3"]
]
}
]
}
试试这个,让我们知道。
我的代码如下
@PUT @Path("/{key}/")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public MyResponse loadData( MonitoringDataRequest monReq) {
}
@XmlRootElement(name="data")
public class MonitoringDataRequest {
private List<MonitoringData> data;
@XmlElement
public void setData(List<MonitoringData> data) {
this.data = data;
}
public List<MonitoringData> getData() {
return data;
}
}
@XmlRootElement(name="monitoring_data")
public class MonitoringData {
private List<String> keys;
private List<SubkeyData> subKeys;
@XmlElement
public void setKeys(List<String> keys) {
this.keys = keys;
}
public List<String> getKeys() {
return keys;
}
@XmlElement(name="subkeys")
public void setSubKeys(List<SubkeyData> subKeys) {
this.subKeys = subKeys;
}
public List<SubkeyData> getSubKeys() {
return subKeys;
}
}
@XmlRootElement(name="subkeys")
//@XmlAccessorType(XmlAccessType.NONE)
public class SubkeyData
{
private List<String[]> subkeys;
@XmlElement
public void setSubkeys(List<String[]> subkeys)
{
this.subkeys = subkeys;
}
public List<String[]> getSubkeys()
{
return subkeys;
}
}