ObjectMapper出现问题,请更改我的字段名称



我正在尝试创建一个方法,将对象传递到该方法并读取所有字段,以便为null和String的字段指定值"。

现在问题出在我的课上了。我有这个型号:

@Getter
@Setter
@NoArgsConstructor
@ToString
public class AccountModel {
private String noTotCount;
private int nTotal;
private String account;
}

我采用了这种方法:private ObjectMapper obMapper=新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()时,objectMap中没有包含关键字noTotCount的字段,因为包含objectMap的关键字是nototCount

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

您在javabean命名约定中遇到了一个问题,即当您具有以单个字母作为第一个"单词"的camelcase属性时,lombok和jackson生成的getter名称。有关详细信息,请参阅此问题。

总之,jackson期望属性(getter和setter(,因为它们将由IDE(例如eclipse(生成:getnTotCount,但是我猜lombok生成getNTotCount(我还没有对您的代码进行反lomboked(。这使得jackson失败(通过重命名getter来复制(。

解决方法:自己创建getter并防止lombok生成@JsonProperty("nTotCount") public String getNTotCount()public String getnTotCount()

相关内容

  • 没有找到相关文章

最新更新