接收POST请求并获取Java / Spring中的JSON元素

时间:2019-06-27 08:19:12

标签: java json rest spring-boot

因此,我按照下面的Spring指南构建了一个简单的Rest服务。 https://spring.io/guides/gs/rest-service/

此刻,我可以使用Postman通过对URL http://localhost:8080/greeting的GET请求获取一些值

我现在想将其更改为POST请求,并从Postman发送一些JSON结构到我的控制器,并获取从Postman发送的元素,例如,在控制台中打印它们。我的控制器代码如下:

@RestController
public class GreetingController {

    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @RequestMapping("/greeting")
    public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
        return new Greeting(counter.incrementAndGet(), String.format(template, name));
    }
}

假设我要发布JSON结构:

{
  "header": {"name": "1234"},
  "address": "someplace"
}

我将如何在Java代码中检索和打印address元素?

2 个答案:

答案 0 :(得分:2)

只需为您的请求数据创建一个pojo,例如

public class RequestData {
    Map<String,String> header;
    String address;
}

和控制器方法

@PostMapping("/request")
public ResponseEntity postController(
  @RequestBody RequestData requestData) {

    System.out.println(requestData.address)
    return ResponseEntity.ok(HttpStatus.OK);
}

答案 1 :(得分:0)

如果有效载荷的变化取决于要求,则可以使用Map代替POJO类。

@RequestMapping(value = "/greeting", method = RequestMethod.POST)
public String greeting(HashMap<String,Object> payload){
....
....
}