当前位置: 首页 > 知识库问答 >
问题:

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

金子轩
2023-03-14

我正在尝试创建一个方法,对象被传递到该方法,并读取所有字段,以便为null且为String的字段被赋予“”的值。

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

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

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

}

我做了这个方法:private 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);

}

共有1个答案

张财
2023-03-14

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

总之,jackson期望属性(getters和setters)是由IDE(例如eclipse)生成的:getntotcount,但是我猜是lombok生成了getntotcount(我没有解除您的代码的lombok)。这使得jackson失败(通过重命名getter来再现)。

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

 类似资料:
  • 我只是按照这个问题修改了pom以创建不同的war文件。这是原始配置 下面是修改后的(要创建cambelton.war) 当尝试构建时,它会出现错误,但会创建war文件。我认为在尝试创建zip文件时会出现问题。这是错误消息 编辑1 这是webapp。xml 编辑2:也添加了$符号,但仍然给出与相同的错误

  • 本文向大家介绍解决更改AUTH_USER_MODEL后出现的问题,包括了解决更改AUTH_USER_MODEL后出现的问题的使用技巧和注意事项,需要的朋友参考一下 使用django自带的 AbstractUser 扩展之后,更改AUTH_USER_MODEL = 'users.UserProfile'属性后,进行数据库迁移时, 出现如下报错: ValueError: The field admin

  • 问题内容: 我认为我需要创建一个专家,并且找不到任何示例代码来启动该过程。 JSON的创建者正在使用和属性,因此使用带有大写字母首字母的字段名称。我将JSON解析为POJO,因此我想使用小写的首字母。 在他们的结尾: 因此,在我的末端必须具有: 我更喜欢: 我可以用吗? 问题答案: 您的第一个问题可以通过以下注释非常简单地解决: 现在,将匹配大小写不同的字段名称。如果你不想添加注解到您的类,你可以

  • 问题内容: 我有一个来自遗留系统的悖论表,我需要对其进行单个查询。字段名称中包含空格-即“街道1”。当我尝试在delphi中仅对“街道1”字段制定查询时,出现错误- 关键字使用无效。令牌:1,行号:1 Delphi V7-对象Pascal,标准Tquery对象名称query1。 问题答案: 您需要在查询中为字符串加上表名的前缀。 例如:字段名称为“ Street 1”,表称为客户,选择为:

  • 日期格式如下所示:2020-07-11 23:11:52 我正在使用fetch从csv文件中提取数据并将其拆分为单个数据 如何将此字符串(日期)更改为带时间的日期,以便在图表上绘图

  • 如果proto的枚举名发生更改,它是否向后兼容? 例如,我最初有这个: 我修改枚举定义为: ID_1的旧proto消息是否与从包含ID_3的消息编译的新解析器兼容?