2017-08-09 58 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令牌這是什麼? –