[Java] जैक्सन को सीरियलाइजेशन के दौरान किसी क्षेत्र को अनदेखा करने के लिए कैसे कहें यदि इसका मूल्य शून्य है?


Answers

जैक्सन> 1.9.11 और <2.x के साथ @JsonSerialize एनोटेशन का उपयोग करने के लिए:

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

Question

सीरियलाइजेशन के दौरान क्षेत्र मूल्य को अनदेखा करने के लिए जैक्सन को कैसे कॉन्फ़िगर किया जा सकता है यदि उस फ़ील्ड का मान शून्य है।

उदाहरण के लिए:

public class SomeClass {
   // what jackson annotation causes jackson to skip over this value if it is null but will 
   // serialize it otherwise 
   private String someValue; 
}



यदि आप इस नियम को जैक्सन 2.6+ के सभी मॉडलों में जोड़ना चाहते हैं तो इसका उपयोग करें:

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);



यदि स्प्रिंग बूट में , आप सीधे संपत्ति फ़ाइलों के माध्यम से जैक्सन ObjectMapper को कस्टमाइज़ कर सकते हैं।

उदाहरण application.yml :

spring:
  jackson:
    default-property-inclusion: non_null # only include props if non-null

संभावित मूल्य हैं:

always|non_null|non_absent|non_default|non_empty

अधिक: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-spring-mvc.html#howto-customize-the-jackson-objectmapper




मेरे मामले में

@JsonInclude(Include.NON_EMPTY)

इसे काम किया




जैक्सन 2.x + उपयोग करें

mapper.getSerializationConfig().withSerializationInclusion(JsonInclude.Include.NON_NULL);



जैक्सन 2.x में, उपयोग करें:

@JsonInclude(JsonInclude.Include.NON_NULL)



यह मुझे कुछ समय से परेशान कर रहा है और मुझे अंत में यह मुद्दा मिला। यह मुद्दा गलत आयात के कारण था। इससे पहले मैं उपयोग कर रहा था

com.fasterxml.jackson.databind.annotation.JsonSerialize

जिसे बहिष्कृत किया गया था। बस आयात को प्रतिस्थापित करें

import org.codehaus.jackson.map.annotate.JsonSerialize;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;

और इसका उपयोग करें

@JsonSerialize(include=Inclusion.NON_NULL)