最近突然要用到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":"備注"}