当前位置: 首页 > 面试题库 >

使用@RequestBody将JSON转换为Enum类型

施彬郁
2023-03-14
问题内容

我有一个主枚举类,它本质上是一种对象类型的类定义。例如,它看起来像下面的示例:

public enum ColorDefinition
{
     private String abbrev;
     private String color;
     private Class colorClass;
     RED("RD", "Red", Red.class),
     GREEN("GN", "Green", Green.class),
     BLUE("BL", "Blue", Blue.class)....
}

我正在尝试建立一个Javascript模型的发布请求,该请求在主体中发送一个映射,例如

到使用

@RequestMapping(value = "v1/color/EnableColors", method = RequestMethod.POST)
@ResponseBody
public ResponseObject enableColors(@RequestBody Map<ColorDefinition, Integer> colorMapping)

而我得到以下错误信息:
不能建立从字符串“红”型ColorDefinition的地图键:不是一个有效的表示:不能建立从字符串“红”型ColorDefinition的地图键:对于Enum类值不是一个

什么我在这里做错了吗?我是否需要枚举类中的其他方法来正确转换传入的枚举值?它是否应该使用枚举中的另一个值(我没有成功尝试过它们)?感谢您的任何帮助,似乎应该可以自动转换输入值,我只是想不通!


问题答案:

错误消息解释了出了什么问题:Red内部没有定义ColorDefinition。情况需要匹配;枚举值区分大小写。在你的JSON需要的关键是REDGREENBLUE

在内部,Spring用于valueOf获取String的枚举表示形式。反序列化期间,ColorDefinition.valueOf("Red")将引发,IllegalArgumentException因为Redin中没有定义ColorDefinition。Spring会拦截此异常,这就是为什么您看到错误消息的原因。但是,ColorDefinition.valueOf("RED")返回ColorDefinition.RED因为REDin中有一个定义ColorDefinition



 类似资料:
  • 问题内容: 我想创建一个包含我的类的实例变量的JSON字符串。 例如, 会成为: 我研究了几个用于创建JSON的C ++库,它们似乎都异常复杂。我想要类似Javascript的东西。换句话说,只需将std :: map传递给它并接收一个字符串。该地图可能包含其他地图,向量,列表,字符串,数字和布尔值。 最好的方法是什么? 谢谢你的帮助。 编辑 我研究了以下内容: json spirit,jsonc

  • 正如在这里被问及的,这个#58538732的后续问题 根据Lukas Eder的建议,我编写了一个,将转换为 现在看起来如下所示 出现以下错误消息: 线程“main”java.lang中出现异常。错误:未解决的编译问题: 无法访问QueryFeaturesTask类型的封闭实例。必须使用QueryFeaturesTask类型的封闭实例限定分配(例如,x.new A(),其中x是QueryFeatu

  • 问题内容: 我打算通过将其编码为JSON来发送充满数据的Javascript数组对象。任何好的jQuery插件吗? 在Java端,将JSON解析为Java数组的标准方法是什么? 总体流程如下: Javascript会在当前页面上编译一堆数据并将其存储在数组中。 数组对象编码为JSON。 Java代码保存JSON。 对每个页面重复执行并用Java代码编译成功的JSON。 Java代码向服务器提交一个

  • 问题内容: 我有一个JSON文件,在此JSON文件中使用解析器将其转换为XML格式,然后写回xml文件 我在Groovy中找不到有关如何执行此操作的任何示例 如果我有如下所示的JSON: 然后,应将其转换为如下所示的XML: 我一直在寻找JSON到XML转换代码 问题答案: 如果您使JSON有效(将名称四舍五入,并且在初始块中加一个逗号),则可以执行此操作以将其转换(专门针对此示例) 我不知道将x

  • 问题内容: 我正在尝试使用PHP将CSV文件转换为JSON。 这是我的代码 //我看到了所有数据 然后我尝试显示它,但是屏幕上什么都没有显示。我所看到的只是空白屏幕和0错误消息。 我做错什么了吗?有人能帮我吗 ? 的相加结果 问题答案: 尝试这样:

  • 问题内容: 下面是我从在线气象站提取的json结构。我还包括一个json_to_csv python脚本,该脚本应该将json数据转换为csv输出,但仅返回“ Key”错误。我只想从“ current_observation”中提取数据。 检索温度字符串并将其转换为.csv格式的最佳方法是什么?谢谢! 问题答案: 也许熊猫可以为您提供帮助。.read_json()函数创建一个不错的数据框,您可以从