You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jackson的@JsonProperty重命名JSON字段失效如何解决

解决Jackson序列化时@JsonProperty("@context")不生效的问题

可能的原因及解决方法

1. 确认注解包的正确性

确保使用的是com.fasterxml.jackson.annotation.JsonProperty,而非其他框架(如javax.validation)的同名注解。如果引入了多个包,可能会导致注解被错误识别。

2. 显式指定注解的访问权限

结合Lombok的@Data注解,可能存在字段注解与自动生成的getter/setter的冲突。可以在@JsonProperty中添加access属性,明确指定读写权限:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Item {
    @JsonProperty(value = "@context", access = JsonProperty.Access.READ_WRITE)
    String context;
    String type;
    String dateModified;
}

3. 在getter/setter方法上添加注解

如果Lombok生成的方法未被Jackson正确识别,可手动为getter和setter添加@JsonProperty注解,确保字段名映射生效:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Item {
    String context;
    String type;
    String dateModified;

    @JsonProperty("@context")
    public String getContext() {
        return context;
    }

    @JsonProperty("@context")
    public void setContext(String context) {
        this.context = context;
    }
}

4. 检查ObjectMapper的配置

确保ObjectMapper没有禁用注解功能,也没有配置会覆盖字段名的命名策略:

ObjectMapper mapper = new ObjectMapper();
// 确保启用注解支持(默认开启,但若有自定义配置需检查)
mapper.enable(MapperFeature.USE_ANNOTATIONS);
// 避免使用会修改字段名的命名策略,比如:
// mapper.setPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE);
mapper.enable(SerializationFeature.INDENT_OUTPUT);

5. 排除服务层逻辑干扰

创建简单的测试代码,直接序列化Item对象,验证注解是否生效:

public class SerializationTest {
    public static void main(String[] args) throws JsonProcessingException {
        Item testItem = new Item();
        testItem.setContext("test-context");
        testItem.setType("test-type");
        testItem.setDateModified("2024-05-20T10:00:00.000Z");

        ObjectMapper mapper = new ObjectMapper();
        mapper.enable(SerializationFeature.INDENT_OUTPUT);
        System.out.println(mapper.writeValueAsString(testItem));
    }
}

如果测试输出中显示@context字段,说明问题出在服务层的对象生成逻辑(如exportService.generate()),需检查对象是否被正确赋值或修改。


内容的提问来源于stack exchange,提问作者Kavya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 06:00:11