@JsonAlias डीसीरियलाइज़ेशन (JSON → Java) के दौरान एक फील्ड के लिए एक या अधिक वैकल्पिक नाम परिभाषित करता है। सीरियलाइज़ेशन (Java → JSON) के दौरान केवल वास्तविक प्रॉपर्टी नाम का उपयोग किया जाता है।
सिंटैक्स
@Target({ANNOTATION_TYPE, FIELD, METHOD, PARAMETER})
@Retention(RUNTIME)
public @interface JsonAlias {
String[] value();
}उदाहरण
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
class Technology {
@JsonProperty("skill")
private String skill;
@JsonProperty("subSkill")
@JsonAlias({"sSkill", "mySubSkill"}) // वैकल्पिक नाम
private String subSkill;
// गेटर/सेटर...
}
class Employee {
@JsonProperty("empId")
private Integer id;
@JsonProperty("empName")
@JsonAlias({"ename", "myename"})
private String name;
@JsonProperty("empTechnology")
private Technology tech;
// गेटर/सेटर...
}
public class JsonAliasDemo {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
Technology tech = new Technology("Java", "Oracle");
Employee emp = new Employee(110, "Raja", tech);
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(emp);
System.out.println(json);
}
}आउटपुट (सीरियलाइज़ेशन)
{
"empId" : 110,
"empName" : "Raja",
"empTechnology" : {
"skill" : "Java",
"subSkill" : "Oracle"
}
}उपयोग
डीसीरियलाइज़ेशन के दौरान, JSON में "ename", "myename", "sSkill", या "mySubSkill" सभी संबंधित फील्ड्स को सही ढंग से मैप करेंगे।