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

जावा में एक्सक्लूड फिल्टर का उपयोग करके बीन को JSON ऑब्जेक्ट में कैसे कन्वर्ट करें

JsonConfig क्लास का उपयोग सीरियलाइजेशन प्रक्रिया को कॉन्फिगर करने के लिए किया जा सकता है। हम JsonConfig के setJsonPropertyFilter() मेथड का उपयोग JSON में सीरियलाइज करते समय प्रॉपर्टी फिल्टर सेट करने के लिए कर सकते हैं। हमें PropertyFilter इंटरफेस के apply() मेथड को ओवरराइड करके एक कस्टम PropertyFilter क्लास इम्प्लीमेंट करने की आवश्यकता होती है। यह true रिटर्न करता है यदि प्रॉपर्टी को फिल्टर आउट किया जाएगा या false अन्यथा।

सिंटैक्स

public void setJsonPropertyFilter(PropertyFilter jsonPropertyFilter)

उदाहरण

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertyFilter;

public class ConvertBeanToJsonExcludeFilterTest {
    public static void main(String[] args) {
        Student student = new Student("Sai", "Chaitanya", 20, "Hyderabad");
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setJsonPropertyFilter(new CustomPropertyFilter());
        JSONObject jsonObj = JSONObject.fromObject(student, jsonConfig);
        System.out.println(jsonObj.toString(3)); // प्रिटी प्रिंट JSON
    }
    
    public static class Student {
        private String firstName, lastName, address;
        public int age;
        
        public Student(String firstName, String lastName, int age, String address) {
            super();
            this.firstName = firstName;
            this.lastName = lastName;
            this.age = age;
            this.address = address;
        }
        
        // गेटर्स...
        public String getFirstName() { return firstName; }
        public String getLastName() { return lastName; }
        public int getAge() { return age; }
        public String getAddress() { return address; }
    }
}

// CustomPropertyFilter क्लास
class CustomPropertyFilter implements PropertyFilter {
    @Override
    public boolean apply(Object source, String name, Object value) {
        if (Number.class.isAssignableFrom(value.getClass()) || 
            String.class.isAssignableFrom(value.getClass())) {
            return false; // शामिल करें
        }
        return true; // एक्सक्लूड करें
    }
}

आउटपुट

{
  "firstName": "Sai",
  "lastName": "Chaitanya",
  "address": "Hyderabad",
  "age": 20
}

नोट: आउटपुट में सभी फील्ड्स दिख रहे हैं

दिए गए फिल्टर लॉजिक के अनुसार, Number और String क्लास के फील्ड्स शामिल होने चाहिए (false रिटर्न)। चूंकि सभी फील्ड्स String या Number हैं, इसलिए सभी शामिल हैं। वास्तविक एक्सक्लूजन के लिए:

// विशिष्ट फील्ड्स को एक्सक्लूड करने के लिए
class CustomPropertyFilter implements PropertyFilter {
    private Set<String> excludedFields = Set.of("password", "ssn", "internalId");
    
    @Override
    public boolean apply(Object source, String name, Object value) {
        return excludedFields.contains(name); // true = एक्सक्लूड
    }
}

JsonConfig के अन्य उपयोगी मेथड्स

मेथड विवरण
setExcludes(String[])नाम से फील्ड्स एक्सक्लूड करें
setIncludes(String[])केवल निर्दिष्ट फील्ड्स शामिल करें
setJsonPropertyFilter()कस्टम फिल्टर लॉजिक
setCycleDetectionStrategy()सर्कुलर रेफरेंस हैंडलिंग
registerJsonValueProcessor()कस्टम टाइप सीरियलाइजर्स

setExcludes() का उपयोग (सरल दृष्टिकोण)

JsonConfig config = new JsonConfig();
config.setExcludes(new String[]{"password", "ssn", "internalId"});
JSONObject json = JSONObject.fromObject(bean, config);

JSON-lib निर्भरताएं

पिछले JSON-lib आर्टिकल्स देखें (1005094121)।

आधुनिक विकल्प (Jackson)

// @JsonIgnore फील्ड पर
@JsonIgnore
private String password;

// @JsonView के साथ
@JsonView(Views.Public.class)
private String name;

// डायनामिक फिल्टरिंग
ObjectMapper mapper = new ObjectMapper();
SimpleBeanPropertyFilter filter = SimpleBeanPropertyFilter
    .serializeAllExcept("password", "ssn");
FilterProvider filters = new SimpleFilterProvider()
    .addFilter("myFilter", filter);
mapper.writer(filters).writeValueAsString(bean);
  1. - Java में JSON स्ट्रिंग को JSON ऑब्जेक्ट में कैसे बदलें?

    JSON का मतलब JavaScript Object Notation है और इसका उपयोग डेटा के ट्रांसफर और स्टोरेज के लिए किया जा सकता है। JSONObject एक String से टेक्स्ट पार्स करके मैप-जैसा ऑब्जेक्ट बना सकता है। ऑब्जेक्ट अपनी सामग्री में हेरफेर करने के लिए मेथड्स प्रदान करता है, और JSON कंप्लायंट ऑब्जेक्ट सीरियलाइज़ेशन उत्पन्न

  1. - Jackson और Gson का उपयोग करके Java POJO को JSON में आसानी से बदलें

    इस ट्यूटोरियल में हम दिखाते हैं कि दो लाइब्रेरी, Jackson और Gson का उपयोग करके Java ऑब्जेक्ट को JSON में कैसे बदलें। हम एक Person क्लास का उपयोग करेंगे जो सिर्फ एक स्टैंडर्ड POJO है। एक बार Person ऑब्जेक्ट बनाने के बाद, हम इसे विभिन्न लाइब्रेरी का उपयोग करके JSON में बदल सकते हैं। Person.java import

  1. - Java Map को JSON में बदलना: Jackson, Gson, और org.json के साथ चरण-दर-चरण गाइड

    Java Map को JSON में बदलने के कई तरीके हैं। Java Arrays और Maps को JSON में बदलना और इसके विपरीत करना काफी आम है। इस पोस्ट में, हम Java Map को JSON में बदलने के 3 अलग-अलग उदाहरण देखेंगे। हम Jackson, Gson और org.json लाइब्रेरी का उपयोग करेंगे। Jackson का उपयोग करके Java Map को JSON में बदलें निम्न उद