Java ObjectMapper更改我的字段名称时出现问题

Java ObjectMapper更改我的字段名称时出现问题,java,jackson,objectmapper,Java,Jackson,Objectmapper,我试图创建一个方法,将一个对象传递到该方法并读取所有字段,以便将null字段和字符串字段的值设置为“” 这个问题现在出现在我的课堂上。我有这个模型: @Getter @Setter @NoArgsConstructor @ToString public class AccountModel { private String noTotCount; private int nTotal; private String account; } 我用这种方法: 私有对象映射

我试图创建一个方法,将一个对象传递到该方法并读取所有字段,以便将null字段和字符串字段的值设置为“”

这个问题现在出现在我的课堂上。我有这个模型:

@Getter
@Setter
@NoArgsConstructor
@ToString
public class AccountModel {

    private String noTotCount;
    private int nTotal;
    private String account;

}
我用这种方法: 私有对象映射器obMapper=新对象映射器()

私有对象stringNullToEmpty(对象对象){
Class clase=object.getClass();
Map objectMap=obMapper.convertValue(对象,新类型引用(){});
for(字段:clase.getDeclaredFields()){
字符串fieldName=field.getName();
if(field.getType().equals(String.class)&&objectMap.get(fieldName)==null){
put(field.getName(),“a”);
}
}
返回obMapper.convertValue(objectMap,clase);
}
当我创建
obMapper.convertValue()
时,会出现错误,因为他正在将我的
noTotCount
字段转换为
noTotCount
,因此当您进入条件并尝试
put()
,objectMap中没有包含键
noTotCount
的字段,因为包含objectMap的键是
noTotCount


为什么ObjectMapper会将我的
noTotCount
字段转换为
noTotCount

当您的camelcase属性的第一个“单词”只有一个字母时,您遇到了java bean命名约定、lombok和jackson生成的getter名称的问题。有关更多详细信息,请参阅

总之,jackson希望属性(getter和setter)与IDE(例如eclipse)生成的属性一样:
getntcount
,但是我猜lombok会生成
getntcount
(我还没有删除您的代码)。这使得jackson失败(通过重命名getter复制)


解决方法:自己创建getter并防止lombok生成它
@JsonProperty(“nTotCount”)公共字符串getntcount()
公共字符串getntcount()

请添加完整的模型。属性的名称来自getter/setter,而不是字段的名称。在我看来,你好像在打错字。@M.Deinum这是我的整个模型,我用的是龙眼annotations@Babyburger对不起,我在复制和粘贴时出错了,这篇文章已经被编辑过了
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);

}