@JsonAlias アノテーションは、逆シリアル化中に受け入れられる属性の 1 つ以上の代替名 を定義し、JSON データを設定できます。 Java オブジェクトに。ただし、シリアル化するとき、つまり Java オブジェクトから JSON を取得するときは、alias.
<strong>@Target(value={ANNOTATION_TYPE,FIELD,METHOD,PARAMETER}) @Retention(value=RUNTIME) public @interface JsonAlias</strong>
import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.*; import java.io.*; public class ObjectToJsonTest { public static void main(String[] args) throws JsonProcessingException { <strong>ObjectMapper </strong>mapper = new <strong>ObjectMapper()</strong>; Technology tech = new Technology("Java", "Oracle"); Employee emp = new Employee(110, "Raja", tech); String jsonWriter = mapper.<strong>writerWithDefaultPrettyPrinter().writeValueAsString(emp);</strong> System.out.println(jsonWriter); } } <strong>// Technology class </strong>class Technology { <strong> @JsonProperty("skill") </strong> private String skill; <strong> @JsonProperty("subSkill") </strong><strong> @JsonAlias({"sSkill", "mySubSkill"}) </strong> private String subSkill; public Technology(){} public Technology(String skill, String subSkill) { this.skill = skill; this.subSkill = subSkill; } public String getSkill() { return skill; } public void setSkill(String skill) { this.skill = skill; } public String getSubSkill() { return subSkill; } public void setSubSkill(String subSkill) { this.subSkill = subSkill; } } <strong>// Employee class </strong>class Employee { <strong> @JsonProperty("empId") </strong> private Integer id; <strong> @JsonProperty("empName") </strong><strong> @JsonAlias({"ename", "myename"}) </strong> private String name; <strong> @JsonProperty("empTechnology") </strong> private Technology tech; public Employee(){} public Employee(Integer id, String name, Technology tech){ this.id = id; this.name = name; this.tech = tech; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Technology getTechnology() { return tech; } public void setTechnology(Technology tech) { this.tech = tech; } }
<strong>{ "technology" : { "skill" : "Java", "subSkill" : "Oracle" }, "empId" : 110, "empName" : "Raja", "empTechnology" : { "skill" : "Java", "subSkill" : "Oracle" } }</strong>
以上がJackson を使用して Java でフィールドの代替名を定義するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。