java - 如何以 JSON 格式发送整数值并在 REST Controller 中接收?

标签 java json spring spring-boot spring-restcontroller

我有一个 REST Controller ,我在其中编写了这段代码

@PostMapping(value = "/otp")
public void otp(@RequestBody Integer mobile) {

    System.out.println(" Mobile = "+mobile);
}

我使用以下输入从 Postman 调用此方法

URL : localhost:8080/otp

正文:

{
    "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

如果我像这样将字符串作为参数

@PostMapping(value = "/otp")
public void otp(@RequestBody String mobile) {

    System.out.println(" Mobile = "+mobile);
}

并将输入传递为

{
    "mobile":123456
}

现在在控制台打印如下

 Mobile = {
    "mobile":"123456"
}

但我只想要这个值 123456。如何实现我的要求?

NOTE: I don't want to create any additional POJO class or even I don't want to send the data using query/path parameter.

最佳答案

如果你想像这样发送你的 body :

{
    "mobile":123456
}

您将创建另一个对象来接收该值。

但是如果你只想接受整数值而不接受任何其他对象,你不会将json对象放在请求体中,而只是整数本身。

正文:

12345

关于java - 如何以 JSON 格式发送整数值并在 REST Controller 中接收?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53411744/

相关文章:

php - 使用对象中的元素添加到类的变量

php - 使用简单的 JSON 数组制作 Doctrine 查询结果

java - 使用@Transactional 保证线程安全

java - Spring 多个应用程序上下文与单个应用程序上下文在耳中

java - 前台通知操作不发送广播

java - 为什么 Integer.MIN_VALUE 的负数给出相同的值?

java - 无法将 JSONObjects 添加到数组中

java - 为什么 Stream.limit 在此代码段中没有按预期工作?

c# - 如何在 JSON 响应 ASP.NET Core 中关闭或处理 camelCasing?

java - InternalResourceViewResolver 和 Winstone 的问题