【发布时间】:2020-06-25 08:08:28
【问题描述】:
我正在尝试创建一个传递对象并读取所有字段的方法,以便为 null 且为 String 的字段赋予 "" 的值。
问题出现在我的课堂上。我有这个模型:
@Getter
@Setter
@NoArgsConstructor
@ToString
public class AccountModel {
private String noTotCount;
private int nTotal;
private String account;
}
我做了这个方法: 私有 ObjectMapper obMapper = new ObjectMapper();
private Object stringNullToEmpty(Object object) {
Class<?> clase = object.getClass();
Map<String, Object> objectMap = obMapper.convertValue(object, new TypeReference<Map<String, Object>>(){});
for (Field field : clase.getDeclaredFields()) {
String fieldName = field.getName();
if(field.getType().equals(String.class) && objectMap.get(fieldName) == null) {
objectMap.put(field.getName(), "a");
}
}
return obMapper.convertValue(objectMap, clase);
}
当我创建obMapper.convertValue() 时出现错误,因为他正在将我的noTotCount 字段转换为nototCount,所以当您进入条件并尝试put() 时,在包含键 noTotCount 的 objectMap,因为包含 objectMap 的键是 nototCount。
为什么 ObjectMapper 将我的 noTotCount 字段转换为 nototCount?
【问题讨论】:
-
请添加您的完整型号。属性的名称是从 getter/setter 派生的,而不是从字段的名称派生的。
-
在您的代码中,我看到的是 nTotCount,而不是 noTotCount。在我看来,你在打错字。
-
@M.Deinum 这是我的整个模型,我使用 lombok 注释
-
@Babyburger 对不起,我复制粘贴的时候出错了,帖子里已经修改过了
标签: java jackson objectmapper