2017-08-09 56 views
4

在我的spring项目中,我以JSON格式获取所有输入值。如何在Spring中从JSON输入中捕获整数值?

@ResponseBody UserDto userDto 

ResponseBody注释是很好的捕获数据。但是,我怎样才能达到如下目的?

@ResponseBody String userId; 

虽然编写上面的代码userId没有得到。是否有其他注释可用于捕获单个值而不使用包装?或者我可以自己创建一个自定义功能来实现此目的?

任何建议将是有用的。

+0

你的天堂” t在这里提供了足够的代码来理解你正在尝试解决的问题,也没有指出发生了什么样的“异常”。正如它目前所写,您的问题没有足够的细节来提供有用的答案。请在您的帖子中添加更多详细信息,以澄清您的问题。 – nbrooks

+0

对不起兄弟我会更新我的问题保持联系 –

+0

请添加您的代码片段以及错误在您的问题。 – Sam

回答

4

的是你可以使用这种方法,你只需要修改你的输入数据:

@SpringBootApplication 
public class So45583717Application { 

    public static void main(String[] args) { 
     SpringApplication.run(So45583717Application.class, args); 
    } 

    @RestController 
    @RequestMapping("/") 
    public static class Ctrl { 

     @PostMapping 
     public String post(@RequestBody Integer userId) { 
      return "UserId is: " + userId; 
     } 
    } 
} 

例子:

curl -XPOST 'localhost:8080' -H'Content-Type: application/json' -d'42' 
UserId is: 42% 

如果你想通过类似{ "userId": 42 }你”将需要一个包装对象序列化的工作。

编辑

而且这样做的另一种方式是接受原始字符串作为一个机构自己做的萃取工作:

@RestController 
@RequestMapping("/") 
public static class Ctrl { 
    private final ObjectMapper mapper = new ObjectMapper(); 

    @PostMapping 
    public String post(@RequestBody String body) throws IOException { 
     final JsonNode jsonNode = mapper.readTree(body); 
     return "UserId is: " + jsonNode.findValue("userId"); 
    } 
} 

例子:

curl -XPOST 'localhost:8080' -H'Content-Type: application/json' -d'{"userId": 42}' 
UserId is: 42% 
+0

酷男!!!这就是我实际上正在寻找..谢谢 –

+0

乐意帮助:) –

+0

com.fasterxml.jackson.databind.JsonMappingException:无法反序列化的实例java.lang.String出START_OBJECT令牌这是什么? –