java - Rest Webservice 传递并接受 List<String>

标签 java web-services rest jackson request-mapping

我是休息网络服务的新手。有人可以帮我确定正确的方法吗?

我希望我的 web 服务能够使用 Json 对象(列表 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 框架来创建我的服务。

对我有用的替代方法是 -

传递简单数据

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

但我不认为这是正确的方法

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

最佳答案

你像这样传递 JSON。 ArrayList 不接受键和值对。然后添加您的 key

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

关于java - Rest Webservice 传递并接受 List<String>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33094938/

相关文章:

c# - 在 .Net 4.0 中,DirectorySearch 能否以允许我翻页的方式返回 LDAP 结果?

Spring Security 与 REST 服务的 SAML token

java - 将 Json 转换为对象时出现 com.fasterxml.jackson.databind.JsonMappingException

java - 保存新实体时在 ManyToOne/OneToMany 关系上创建重复条目

java - 在不知道名称的情况下如何解析 JSONObject?

javax.naming.NameNotFoundException : Name [comp/env] is not bound in this Context. 无法在 Tomcat 中找到 [comp]

android - 制作动态表格(最佳方法)

java - JAX-RS 是否需要数据传输对象 (DTO)?

Java流: How to find id from json?

java - 休息 Controller 未在 Spring Boot 中映射