[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.x + उपयोग करें

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



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

@JsonInclude(Include.NON_EMPTY)

इसे काम किया




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

mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);



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

@JsonInclude(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




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

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)