Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Jackson में @JsonAlias का उपयोग करके फील्ड के वैकल्पिक नाम कैसे परिभाषित करें?

@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" सभी संबंधित फील्ड्स को सही ढंग से मैप करेंगे।

  1. - Java में @Expose एनोटेशन का उपयोग करके JSON से फील्ड को कैसे बाहर करें?

    Gson @Expose एनोटेशन का उपयोग किसी फील्ड को एक्सपोज़्ड या नहीं (सीरियलाइज़्ड या डिसीरियलाइज़्ड के लिए शामिल या नहीं) के रूप में चिह्नित करने के लिए किया जा सकता है। @Expose एनोटेशन दो पैरामीटर्स ले सकता है और प्रत्येक पैरामीटर एक बूलियन है जो या तो true या false मान ले सकता है। GSON को @Expose एनोट

  1. - Java में Jackson का उपयोग करके JSON में फील्ड नाम को कैसे बदलें?

    Jackson एनोटेशन @JsonProperty का उपयोग सीरियलाइज़ेशन या डिसीरियलाइज़ेशन के दौरान किसी प्रॉपर्टी या मेथड पर JSON के लिए किया जाता है। यह एक वैकल्पिक name पैरामीटर लेता है जो उस मामले में उपयोगी होता है जब प्रॉपर्टी नाम JSON में key नाम से अलग होता है। डिफ़ॉल्ट रूप से, यदि key नाम प्रॉपर्टी नाम से मे

  1. - Java में Gson लाइब्रेरी का उपयोग करके नल फील्ड को कैसे सीरियलाइज़ करें?

    डिफ़ॉल्ट रूप से, Gson ऑब्जेक्ट नल मानों वाले फील्ड्स को JSON में सीरियलाइज़ नहीं करता। यदि Java ऑब्जेक्ट में कोई फील्ड नल है, तो Gson उसे बाहर कर देता है। हम GsonBuilder क्लास के माध्यम से Gson को नल मानों को सीरियलाइज़ करने के लिए मजबूर कर सकते हैं। हमें GsonBuilder इंस्टेंस पर serializeNulls() मे