使用Jackson转换含特殊键名x5t#S256的JSON至Java对象问题
解决JSON含特殊字符键与Java对象映射问题
问题核心是Java变量名不允许包含#这类特殊字符,但JSON键带有#,直接用JSON键名作为Java变量名会编译失败。
解决方法很直接:给@JsonProperty注解显式指定对应的JSON键名,同时使用合法的Java标识符作为变量名即可:
public class Key { // 显式指定JSON中的原始键名 @JsonProperty("x5t#S256") private String x5tS256; // 按需添加getter/setter方法 public String getX5tS256() { return x5tS256; } public void setX5tS256(String x5tS256) { this.x5tS256 = x5tS256; } }
原理说明:
@JsonProperty注解的核心作用就是在Jackson序列化/反序列化过程中,建立Java字段与JSON键的映射关系- 当JSON键包含Java标识符不允许的特殊字符时,只需在注解参数中传入原始的JSON键字符串,就能完成正确的字段映射
内容的提问来源于stack exchange,提问作者Lyle Phillips
相关产品推荐
相关产品推荐

