如何接受List <list <string>&gt;来自json的休息网络服务

时间:2017-06-08 08:10:35

标签: json web-services jersey

我有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

1 个答案:

答案 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;
    }

}