春季:@RequestBody和JSON

时间:2020-08-19 13:35:39

标签: java json spring spring-mvc

我有以下几部分代码。当我发送HTTP请求时,出现与carCoordinates字段相关的错误400(如果删除它,一切都很好)。应该是double的列表。

此外,当我将名称carCoordinates更改为carcoordinates而不更改getter名称时,请求得到了很好的接收,但是由于getter未与对象链接(空),因此我无法获取数据。如果我将getter名称更改为getCarcoordinates以匹配该字段,那么它将不再起作用。 任何想法为什么它不起作用?

CarEvent.java:

Public class CarEvent {
    @JsonProperty("carCoordinates")
    protected List carCoordinates;
    ...
    public void setCarCoordinates(Coordinate c) {
        ...
    }
   
    public List getCarCoordinates() {
        return CarCoordinates;
    }
}

发送的JSON是:

{
  "id": [006001556, 631016236, 125899724],
  "speed": "0",
  "carCoordinates": [56.477369, 26.64477, 56.466177, 26.651258, 80.545048, 50.614582],
  "num": "5"
}

请求的服务器类是:

@RequestMapping(method = RequestMethod.POST, value = "/car-action", produces = "application/json;charset=UTF-8")
@ResponseBody
public String CarAction(@RequestBody CarEvent requestBody, @RequestHeader HttpHeaders httpHeaders) {
  ...
}

2 个答案:

答案 0 :(得分:2)

问题可能是您的setter方法。您的字段的类型为List,但setter的对象为Coordinate。根据您的json请求,我认为应该是:

public void setCarCoordinates(List c) {
   this.carCoordinates = c;
}

答案 1 :(得分:2)

您的CarEvent
参数的setter方法错误。
创建一个类Coordinate并扩展到List或 更新如下:

public void setCarCoordinates(List cordinates) {
    ...
}
相关问题