让Webservice传递并接受List <string>

时间:2015-10-13 05:41:40

标签: java web-services rest jackson request-mapping

我是新手来休息webservice。有人可以帮我确定正确的方法。

我希望我的web服务被消耗Json对象(List id)并生成Json对象。

我想将给定的json数据传递给我的服务。

    {
   id : "1"
   id : "2"
   id : "3"
   id : "4"
 }

和我的服务看起来像 -

@RequestMapping(value = "/read/ids", method = RequestMethod.POST)
@ResponseBody
public List<ids> getValues(Collection<String> ids){
  // some calculation....
 }

此代码对我不起作用。 我正在使用spring框架来创建我的服务。

适合我的alernate方式是 -

传递简单数据

1,2

然后服务以消耗它。

@RequestMapping(value = "/read/ids", method = RequestMethod.POST)
@ResponseBody
public List<String> getValues(@Valid @RequestBody String ids){
    List<String> testids = new ArrayList<>();
    if(ids.contains(",")){
        String[] idArray = ids.split(",");
        for(String id : idArray){
            testids.add(service.findByid(id));
        }
    }else{
        testids.add(service.findByid(ids));
    }

    return testids;
}

BUt我不认为正确的方法

注意:我不想创建包含列表的不必要对象

1 个答案:

答案 0 :(得分:1)

你这样传递JSON。 ArrayList不接受键和值对。然后添加密钥

 JSON:
            [
                "1",
                "2",
                "3",
                "4"
            ]       
        @RequestMapping(method = RequestMethod.POST, value = "/read/ids/",headers="Accept=application/json")
        public ArrayList<String>  test(@RequestBody ArrayList<String> ids) throws Exception {
                return ids;
            }