Java中Map<Object, Object>转Object返回null问题排查
类型转换后得到null的问题排查
你遇到的问题是调用objectMapper.convertValue后返回null,核心原因大概率是**event.getArguments()返回值为null**,或是该方法没有正确获取到JSON中嵌套的arguments对象。
先排查最直接的问题
在转换代码前添加日志或调试代码,确认event.getArguments()的实际返回值:
System.out.println(event.getArguments()); // 或用日志框架打印 final Request arguments = objectMapper.convertValue(event.getArguments(), Request.class);
如果打印结果为null,说明问题出在event对象的取值逻辑上,和ObjectMapper的转换逻辑无关。
检查Event类的定义
如果event是自定义Java类,需确保它的getArguments()方法能正确映射JSON中的arguments字段。比如Event类的正确定义应包含对应字段:
@Data @JsonIgnoreProperties(ignoreUnknown = true) public class Event { // 可直接用Request类型,也可以用Map<String, Object>或JsonNode private Request arguments; private Info info; // 若手动编写getter/setter,需确保getArguments()对应正确字段 public Request getArguments() { return arguments; } }
如果Event类中的arguments字段名与JSON里的"arguments"不匹配(比如拼写错误),或是未正确配置Jackson注解(如@JsonProperty),会导致getArguments()返回null。
其他可能的小问题
- 若
event.getArguments()返回的是JsonNode对象,需确认它不是MissingNode(即该字段不存在); - 检查ObjectMapper是否有特殊配置(如禁用自动反序列化),不过你已经给Request类添加了
@JsonIgnoreProperties(ignoreUnknown = true),这种情况概率极低。
修复示例
只要补全Event类中正确的arguments字段定义,再调用event.getArguments()就能拿到预期对象,转换后就不会返回null了。
内容的提问来源于stack exchange,提问作者NITIKA KHATKAR
相关产品推荐
相关产品推荐

