![](/img/trans.png)
[英]How to convert TreeMap with contents to JSON format Spring REST Controller JAVA
[英]How to send Integer value in the form of JSON format and recieve in REST Controller?
我有一個 REST 控制器,我在其中編寫了此代碼
@PostMapping(value = "/otp")
public void otp(@RequestBody Integer mobile) {
System.out.println(" Mobile = "+mobile);
}
我使用以下輸入從 Postman 調用此方法
URL : localhost:8080/otp
Body
:
{
"mobile":123456
}
但我收到以下異常
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Can not deserialize instance of java.lang.Integer out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.Integer out of START_OBJECT token
如果我將 String 作為這樣的參數
@PostMapping(value = "/otp")
public void otp(@RequestBody String mobile) {
System.out.println(" Mobile = "+mobile);
}
並將輸入作為
{
"mobile":123456
}
現在它在控制台中打印如下
Mobile = {
"mobile":"123456"
}
但我只想要這個值123456
。 如何達到我的要求?
注意:我不想創建任何額外的 POJO 類,甚至我不想使用查詢/路徑參數發送數據。
如果您想發送您的身體,例如:
{
"mobile":123456
}
您將創建另一個對象來接收該值。
但是如果您只想接受整數值而不接受任何其他對象,則不會將 json 對象放入請求正文中,而只會放入整數本身。
Body:
12345
創建一個如下所示的 pojo 類。
public class Mobile{
private Integer mobile;
//getter and setter
}
進而
public void otp(@RequestBody Mobile mobile)
打印值使用
mobile.getMobile();
您可以使用類作為請求正文:
class Request {
public Integer mobile;
}
並指定這樣的參數:
public void otp(@RequestBody Request mobile) {
...
json和@RequestBody的轉換過程是自動的,需要你提供一個包含適當字段的類。如果你堅持通過請求體發送數據,你可以使用String來接收json數據作為String。例如:
public void test(@RequestBody String request){
log.info(request);
}
通過這種方式,您收到的請求正文是一個字符串。您需要一些其他工具來幫助您轉換它。像 org.json 一樣,您可以從這里獲得更多信息HttpServletRequest get JSON POST data
但最簡單的方法是創建一個新類來接收數據或將@RequestBody 更改為@RequestParam 或@Pathvariable。
如果您仍然想使用 json 作為請求正文,也許您可以創建一個通用類 A,其中包含許多字段,例如姓名、電話號碼、電子郵件……然后在您發送僅包含手機的請求后,您只需要A.getMobile().這樣,即使你得到100個請求,你仍然需要一個POJO(但不推薦)
只需發送 JSON 中的數字即可。 12345 使用@RequestBody 來接收整數編號。 它會起作用。 我使用郵遞員以 RAW JSON 格式發送它。
順便說一句,我是初學者學習 Spring Boot。
如果你有 org.json.JSONObject
@PostMapping(value = "/otp")
public void otp(@RequestBody String mobile) {
JSONObject obj = new JSONObejct(mobile);
System.out.print(obj.getInt("mobile"));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.