התעלם משדות אפס עם ג'קסון

1. סקירה כללית

מדריך מהיר זה יכסה את אופן ההתקנה ג'קסון יתעלם משדות אפס בעת סדרת סדר שיעור ג'אווה.

אם אתה רוצה להעמיק וללמוד דברים מגניבים אחרים אתה יכול לעשות עם ג'קסון 2 - עבור אל הדרכה הראשית של ג'קסון.

2. התעלם משדות אפסים בכיתה

ג'קסון מאפשר לשלוט בהתנהגות זו ברמת הכיתה:

@JsonInclude (Include.NON_NULL) מחלקה ציבורית MyDto {...}

או - באופן פרטני יותר - ברמת השדה:

מחלקה ציבורית MyDto {@JsonInclude (Include.NON_NULL) פרטי מחרוזת stringValue; int intalue פרטי; // סטרים וקובעים סטנדרטיים}

עכשיו, אנחנו צריכים להיות מסוגלים לבדוק את זה ריק הערכים אכן אינם חלק מפלט ה- JSON הסופי:

@Test ציבורי בטל givenNullsIgnoredOnClass_whenWritingObjectWithNullField_thenIgnored () זורק JsonProcessingException {ממפה ObjectMapper = ObjectMapper חדש (); MyDto dtoObject = MyDto חדש (); מחרוזת dtoAsString = mapper.writeValueAsString (dtoObject); assertThat (dtoAsString, containString ("intValue")); assertThat (dtoAsString, not (containString ("stringValue"))); }

3. התעלם משדות אפסים ברחבי העולם

ג'קסון גם מאפשר הגדרת התנהגות זו ברחבי העולם על ObjectMapper:

mapper.setSerializationInclusion (Include.NON_NULL);

עכשיו כל ריק יתעלם משדה בכל מחלקה המסווגת באמצעות מיפוי זה:

@Test ציבורי בטל שניתן NullsIgnoredGlobally_whenWritingObjectWithNullField_thenIgnored () זורק JsonProcessingException {ObjectMapper mapper = ObjectMapper חדש (); mapper.setSerializationInclusion (Include.NON_NULL); MyDto dtoObject = MyDto חדש (); מחרוזת dtoAsString = mapper.writeValueAsString (dtoObject); assertThat (dtoAsString, containString ("intValue")); assertThat (dtoAsString, containString ("booleanValue")); assertThat (dtoAsString, not (containString ("stringValue"))); }

4. מסקנה

התעלמות ריק שדות היא תצורה כה נפוצה של ג'קסון מכיוון שלעתים קרובות אנחנו צריכים לשלוט טוב יותר על פלט JSON. מאמר זה מראה כיצד לעשות זאת בשיעורים. עם זאת ישנם מקרי שימוש מתקדמים יותר, כגון התעלמות מערכי אפס בעת סדרת מפה.

ניתן למצוא את היישום של כל הדוגמאות וקטעי הקוד בפרויקט Github שלי.


$config[zx-auto] not found$config[zx-overlay] not found