导致该问题的是 lombok.Getter 和 lombok.Setter 注释 .
public class Data {
@JsonProperty("is_charging")
public boolean isCharging;
}
objectMapper.writeValueAsString(new Data());
按预期工作 .
添加@Getter和@Setter注释时会出现问题 .
我没有这个 lombok 库的经验,但据我所知,它为你创建了getter和setter方法 .
通过配置objectMapper,您可以禁用getter和setter方法的自动检测,因此只能对字段进行序列化和反序列化 .
@Getter
@Setter
public class Data {
@JsonProperty("is_charging;")
public boolean isCharging;
}
public static void main(String... args) throws JsonProcessingException, IOException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(MapperFeature.AUTO_DETECT_GETTERS, false);
objectMapper.configure(MapperFeature.AUTO_DETECT_IS_GETTERS, false);
objectMapper.configure(MapperFeature.AUTO_DETECT_SETTERS, false);
Data data = objectMapper.readValue("{\"is_charging\": true}", Data.class);
System.out.print(objectMapper.writeValueAsString(data));
}
输出:
{"is_charging":true}
请注意,在您的情况下只需要 objectMapper.configure(MapperFeature.AUTO_DETECT_IS_GETTERS, false); . 如果您需要,可提供其他参考 .