Java 缺少带有@RequestParam变量的映射

Java 缺少带有@RequestParam变量的映射,java,json,spring,rest,request-mapping,Java,Json,Spring,Rest,Request Mapping,这是我的模型课: public class RequestBody { @JsonProperty("polygon") private GeoPolygon geoPolygon; @JsonProperty("domain_id") private String domainId; private String availability; @JsonProperty("start_time") private String startTime; @JsonProperty("end

这是我的模型课:

public class RequestBody {

@JsonProperty("polygon")
private GeoPolygon geoPolygon;

@JsonProperty("domain_id")
private String domainId;

private String availability;

@JsonProperty("start_time")
private String startTime;

@JsonProperty("end_time")
private String endTime;

@JsonProperty("page_size")
private int pageSize;

private int offset;

//getters, setters, toString()
下面是我的控制器:

@RequestMapping(value = "/request", method = RequestMethod.GET, produces = "application/json")
public ResponseEntity getResponse(RequestBody request){
    // process request, return response.
}
以下是我调用API的方式:

http://localhost:9876/request?availability=TEMPORARY&start_time=2017-06-06T13:24:23Z&end_time=2017-06-05T13:24:23Z&polygon={"type":"polygon","coordinates":[[[-120,10],[-30,10],[-30,60],[-120,60],[-120,10]]]}&domain_id=XYZ&page_size=10&offset=1
现在问题是:

未映射所有属性。特别是带有
@JsonProperty
注释的。这些字段保持为空


我在同一个端点向
POST
请求发送了相同的模型,结果非常好。
@JsonProperty
是否不受
GET
支持?

在JSON序列化/反序列化期间,将考虑
@JsonProperty
应用程序。如果提取的内容来自请求正文(又称
@RequestBody
Spring注释),则会发生JSON反序列化

您的
RequestBody
(小心名称冲突)是从请求参数中提取的。在这种情况下,Spring将不使用JSON反序列化,而只调用相应的JavaBean设置器

如果要将
startTime
映射为
start\u time
,则设置器必须:

public setStart_time(String startTime) {
    this.startTime = startTime;
}

其他字段也是如此。

在JSON序列化/反序列化过程中将考虑
@JsonProperty
应用程序。如果提取的内容来自请求正文(又称
@RequestBody
Spring注释),则会发生JSON反序列化

您的
RequestBody
(小心名称冲突)是从请求参数中提取的。在这种情况下,Spring将不使用JSON反序列化,而只调用相应的JavaBean设置器

如果要将
startTime
映射为
start\u time
,则设置器必须:

public setStart_time(String startTime) {
    this.startTime = startTime;
}

其他字段也是如此。

正如kagmole在回答中所说的那样,
@RequestBody
RequestParam
的JSON反序列化不同,因此您可以通过对
@JsonProperty
name执行setter来消除错误

我只想补充一点,如果您不确定是否将POJO用于
RequestBody
RequestParam
,那么您的字段实际上应该有两个getter/setter


这在已接受答案和其他答案中突出显示

正如kagmole在回答中所说的那样,
@RequestBody
RequestParam
的JSON反序列化不同,因此您可以通过对
@JsonProperty
名称执行setter来消除错误

我只想补充一点,如果您不确定是否将POJO用于
RequestBody
RequestParam
,那么您的字段实际上应该有两个getter/setter

这在已接受答案和其他答案中突出显示