【Java】json别名注解@JsonProperty
最近突然要用到 Java 属性名与需要转换的 JSON 字符串不一致的场景,于是上网查了下可用注解 @JsonProperty 和 @JsonAlias
区别:
@JsonProperty:这个注解提供了序列化和反序列化过程中该 java 属性所对应的名称
@JsonAlias:这个注解只在反序列化时起作用,指定该 java 属性可以接受的更多名称
今天只谈下 @JsonProperty。
@JsonProperty 添加在属性上,并使用 new ObjectMapper().writeValueAsString(object) 转换为别名的 JSON 字符串
Maven 配置
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId>
<version>2.9.2<version> </dependency>
Bean
import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data;@Data
public class FormFix {
@JsonProperty("textField_kyk60fd5")
private String empNo;
@JsonProperty("textField_kyk60fd6")
private String empName;
@JsonProperty("selectField_kyk60fd7")
private String situation;
@JsonProperty("textareaField_kyk60fd8")
private String comment;
}
测试代码
import com.fasterxml.jackson.databind.ObjectMapper;
public static void main(String[] args) throws JsonProcessingException { FormFix formFix = new FormFix(); formFix.setEmpNo("000001"); formFix.setEmpName("姓名"); formFix.setSituation("场景"); formFix.setComment("备注"); String s = new ObjectMapper().writeValueAsString(formFix); System.out.println(s); }
输出
{"textField_kyk60fd5":"000001","textField_kyk60fd6":"姓名","selectField_kyk60fd7":"场景","textareaField_kyk60fd8":"备注"}