java - Jackson serialization: ignore empty values (or null) -


i'm using jackson 2.1.4 , i'm having trouble ignoring fields when i'm converting object json string.

here's class acts object converted:

public class jsonoperation {  public static class request {     @jsoninclude(include.non_empty)     string requesttype;     data data = new data();      public static class data {     @jsoninclude(include.non_empty)         string username;         string email;         string password;         string birthday;         string coinspackage;         string coins;         string transactionid;         boolean isloggedin;     } }  public static class response {     @jsoninclude(include.non_empty)     string requesttype = null;     data data = new data();      public static class data {         @jsoninclude(include.non_empty)         enum errorcode { error_invalid_login, error_username_already_taken, error_email_already_taken };         enum status { ok, error };          status status;         errorcode errorcode;         string expiry;         int coins;         string email;         string birthday;         string pictureurl;         arraylist <performer> performer;     } } } 

and here's how convert it:

objectmapper mapper = new objectmapper(); mapper.setvisibility(propertyaccessor.field, visibility.any);  jsonoperation subscribe = new jsonoperation();  subscribe.request.requesttype = "login";  subscribe.request.data.username = "vincent"; subscribe.request.data.password = "test";   writer strwriter = new stringwriter(); try {     mapper.writevalue(strwriter, subscribe.request); } catch (jsongenerationexception e) {     // todo auto-generated catch block     e.printstacktrace(); } catch (jsonmappingexception e) {     // todo auto-generated catch block     e.printstacktrace(); } catch (ioexception e) {     // todo auto-generated catch block     e.printstacktrace(); }  log.d("json", strwriter.tostring()) 

here's output:

{"data":{"birthday":null,"coins":null,"coinspackage":null,"email":null,"username":"vincent","password":"test","transactionid":null,"isloggedin":false},"requesttype":"login"} 

how can avoid null values? want take required information "subscription" purpose!

here's output i'm looking for:

{"data":{"username":"vincent","password":"test"},"requesttype":"login"} 

i tried @jsoninclude(include.non_null) , put variables null, didn't work either! guys!

you have annotation in wrong place - needs on class, not field. i.e:

@jsoninclude(include.non_null) //or include.non_empty, if fits use case  public static class request {   // ... } 

as noted in comments, in version 2.x+ syntax annotation is:

@jsoninclude(jsonserialize.inclusion.non_null) // or jsonserialize.inclusion.non_empty 

the other option configure objectmapper directly, calling mapper.setserializationinclusion(include.non_null);

(for record, think popularity of answer indication annotation should applicable on field-by-field basis *ahem @fasterxml*)


Comments

Popular posts from this blog

node.js - Bad Request - node js ajax post -

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -