java - 如何在 spring 中从 JSON 输入中捕获整数值?

标签 java json spring

在我的 spring 项目中,我获得了 JSON 格式的所有输入值。

@ResponseBody UserDto userDto

ResponseBody 注释非常适合捕获数据。但是我怎样才能实现如下目标呢?

@ResponseBody String userId;

在编写上面的代码时,userId 没有获取。是否有任何其他注释可用于在不使用包装器的情况下捕获单个值?或者我可以自己创建自定义功能来实现这一目标吗?

任何建议都会有用。

最佳答案

您可以按原样使用这种方法,您只需要修改您的输入数据:

@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% 

关于java - 如何在 spring 中从 JSON 输入中捕获整数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45583717/

相关文章:

java - 尝试从特定列检索值时,获取 java.lang.String 无法转换为 JSONObject

android - 将 JSON 从/assets 文件夹读取到 Android 中的 ArrayList 中?

java - 当对象通过 post 命令发送到 spring WebApp 时,对象字段为 null

spring - 是否可以使 spring 安全 session 无效?

java - 如何从集合中返回对象。

java - 在 Android 代码中模拟创建 AsyncTasks 和 Intents 的优雅方法

java - 集群环境下共享java HashMap

javascript - 如果多个调用之一失败,则 JSONP 请求调用不成功

android - 在android中动态生成JSONObject

java - Spring/maven 项目在 tomcat 上运行时生成错误