前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot API 的 Controller 如何获得发送的 JSON 数据

Spring Boot API 的 Controller 如何获得发送的 JSON 数据

原创
作者头像
HoneyMoose
修改2021-01-27 10:23:56
1.7K0
修改2021-01-27 10:23:56
举报
文章被收录于专栏:CWIKIUS

我们知道可以发送 JSON 数据到 API 上面。

通常我们都会使用 POST 方法,在实际编程的时候我们应该如何获得发送的 JSON 数据呢?

Controller 获得 JSON 数据

在客户端通过 API 发送 JSON 数据到 Controller 的时候,我们可以在 Controller 使用 RequestBody 注解来获得 JSON 数据。

考察下面的代码:

代码语言:javascript
复制
    /**
     * Search Question Index
     *
     * @return
     */
    @PostMapping("/sold")
    public ResponseEntity<?> searchUser(@RequestBody RealEstateRequest realEstateRequest) {

        logger.debug("realEstateRequest - {}" , realEstateRequest.getPropertyTown());

        REListing reListing=  listingService.getREListingById();

        return new ResponseEntity<REListing>(reListing, HttpStatus.OK);
    }
api-json-01
api-json-01

在 API 获得 JSON 数据后,将会尝试将 JSON 数据的内容设置到对象 RealEstateRequest 中。

所以,我们还需要在代码中定义一个对象 RealEstateRequest。

RealEstateRequest 对象的代码如下,在下面的代码中,我们省下了上面需要导入的 package 等

代码语言:javascript
复制
public class RealEstateRequest implements Serializable {
    private static final long serialVersionUID = 6474765081240948885L;


    private String propertyTown;

    public String getPropertyTown() {
        return propertyTown;
    }

    public void setPropertyTown(String propertyTown) {
        this.propertyTown = propertyTown;
    }
}

在这里需要注意的是,为了能够设置正确的值到对象中,你 propertyTown 的这个变量需要和 JSON 对象中的变量相同。

所以你的 JSON 测试数据应该为:

代码语言:javascript
复制
{

    "propertyTown" : "Manchester"

}

通过 API 查看对象,你会看到从客户端传递的 JSON 数据已经被设置为正常的数据了。

api-json-02
api-json-02

POSTMAN 从客户端发送的数据如下:

api-json-03
api-json-03

JSON 数据字段名

在上面的示例中,我们定义的一个 JSON 字段名为:propertyTown。

如果不做任何设置的话,你的对象是需要使用与这个字段名完全相同的名字才能获得需要的数据的,有时候我们可能不希望这样。我们希望使用不同的名字,例如我们希望设置字段名为:property_town,但是我们还是希望 propertyTown 变量能够获得值。

这个时候你就需要使用:JsonProperty 注解了。

可以在定义的对象中使用 @JsonProperty(“property_town”) 注解。

原因是 RequestBody 使用 jackson 来映射对象的,所以 JsonProperty 这个是 jackson 的注解,主要告诉 jackson 来如何对字段中的数据来进行映射。

在完成上面的修改后,你的 JSON 数据应该是如下的:

api-json-05
api-json-05

然后再对 API 进行测试,你会看到 propertyTown 也能够设置上你传递的参数。

https://www.ossez.com/t/spring-boot-api-controller-json/13217

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Controller 获得 JSON 数据
  • JSON 数据字段名
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档