spring mvc controller接受具有可变数量的键/值的JSON对象

时间:2013-12-26 20:05:50

标签: java json spring spring-mvc

我知道我需要接受的JSON对象永远是单键和值。我尝试使用@RequestBody Map和@RequestBody Map编写我的Spring MVC控制器,但是我总是得到400 Bad Request。当我将@RequestBody更改为String时,我看到我的数据通过,并且没有返回Bad Request响应。是否可以编写一些内容来接受任意JSON对象,该对象始终符合作为单个单个键的合同值?

@RequestMapping(value = "/advancedSearch", method = RequestMethod.POST,consumes ="application/json",produces = "application/json")
@ResponseBody
public MyResponse performAdvancedSearch(@RequestBody String advancedFormData) throws Exception{

这是现在使用String ...

的映射

示例JSON -

    {"name":"frank","Type":"Lumber"}

从前端发布时我调用JSON.stringify()来创建data.Again,JSON总是很简单,没有嵌套列表/对象只是直接键/值。服务器端永远不知道会有多少个键值对,并且它不知道所有潜在的键,因此我无法创建一个简单的POJO。

1 个答案:

答案 0 :(得分:11)

让您的生活变得简单并创建一个课程

public class AdvancedFormData
    private String name;
    private String type; // make it lower case in your json too
    // appropriate getters and setters and a no-arg constructor for Jackson
}

并使用

public MyResponse performAdvancedSearch(@RequestBody AdvancedFormData advancedFormData) throws Exception{