JavaでJacksonを使用してフィールドの代替名を定義するにはどうすればよいですか?
構文
@Target(value={ANNOTATION_TYPE,FIELD,METHOD,PARAMETER}) @Retention(value=RUNTIME) public @interface JsonAlias
例
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 { ObjectMapper mapper = new ObjectMapper(); Technology tech = new Technology("Java", "Oracle"); Employee emp = new Employee(110, "Raja", tech); String jsonWriter = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(emp); System.out.println(jsonWriter); } } // Technology class class Technology { @JsonProperty("skill") private String skill; @JsonProperty("subSkill") @JsonAlias({"sSkill", "mySubSkill"}) 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; } } // Employee class class Employee { @JsonProperty("empId") private Integer id; @JsonProperty("empName") @JsonAlias({"ename", "myename"}) private String name; @JsonProperty("empTechnology") 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; } }
出力
{ "technology" : { "skill" : "Java", "subSkill" : "Oracle" }, "empId" : 110, "empName" : "Raja", "empTechnology" : { "skill" : "Java", "subSkill" : "Oracle" } }
-
JavaのJacksonを使用してJSONのフィールド名を変更するにはどうすればよいですか?
ジャクソンアノテーション@JsonProperty シリアル化中にプロパティまたはメソッドで使用されます または逆シリアル化 JSON 。オプションの「名前」が必要です ’パラメータ これは、プロパティ名が「キー」と異なる場合に役立ちます ’名前 JSON 。デフォルトでは、キー名がプロパティ名と一致する場合、値はプロパティ値にマップされます。 以下の例では、フィールド名を変更できます @JsonPropertyアノテーションを使用したJSONで 。 例 import java.io.IOException; import com.fasterxml.jackson.databind.
-
JavaでGsonライブラリを使用してnullフィールドをシリアル化するにはどうすればよいですか?
デフォルトでは、Gsonオブジェクトはnull値のフィールドをシリアル化しません。 JSONに。 Javaオブジェクトのフィールドがnullの場合、Gsonはそれを除外します。 Gsonにnull値をシリアル化するように強制する GsonBuilder経由 クラス。 serializeNulls()を呼び出す必要があります GsonBuilderのメソッド インスタンス Gsonオブジェクトを作成する前。一度serializeNulls() GsonBuilderによって作成されたGsonインスタンスと呼ばれています できます nullフィールドを含める シリアル化されたJSONで。