在使用HashMap进行@RequestBody反序列化期间将字符串转换为枚举

时间:2014-02-25 16:32:12

标签: java spring-mvc enums hashmap

我很难在@RequestBody注释方法参数中将String转换为ENUM。参数中的Map以某种方式具有字符串的值,即使该值是Enum类型。如何自动将String转换为正确的类型?

枚举

public enum Fruit{
    ORANGE,
    APPLE,
    PEAR
}

请求:

{"123":"ORANGE", "456":"APPLE"}

控制器

@RequestMapping(value="/updateFruit", method = RequestMethod.POST)
public void updateFruit(@RequestBody Map<String, Fruit> fruitMap){
    // Fruit comes in as a String. So the map is a Map<String, String>
    // do stuff....
}

1 个答案:

答案 0 :(得分:0)

我建议您升级到Spring 3.2+,它可以实现您想要的Jackson 2库开箱即用(您还需要导入该依赖项)。

如果不能,您可以创建自定义类

class FruitMap extends HashMap<String, Fruit> {} // or some other Map implementation

并将其用作参数类型

public void updateFruit(@RequestBody FruitMap fruitMap){

不要忘记在请求中设置content-type标头。