Json string to java object mapping failed with jackson -


i trying map json pojo class jackson receiving null values. if remove @jsonignoreproperties annotation throws exception of unrecognized property

json:

{    "tilelevel":[     ],    "systemlevel":[       {          "title":"test system level alert",          "description":"<div class=\"externalclassa5aac8f74c874a2d9db8337eb6685b2a\"><p>​test system level alert​<br></p><p>check url http&#58;//www.google.com<br></p><p><span style=\"font-size&#58;32px;\">formatting tested</span><br></p></div>",          "announcementtype":"system level",          "activef":null,          "tilename":null       }    ],    "announcements":[       {          "title":"test announcement",          "description":"<div class=\"externalclass16980d07d2fb4ab58a2e97c16b7626d3\"><p>​testing.....&#160;<img src=\"/sites/salesbk-cn/sitecollectionimages/salesbook%20announcements/allitems/00007-confiz-test-doc7.png\" alt=\"00007-confiz-test-doc7.png\" style=\"margin&#58;5px;\" /><br></p></div>",          "announcementtype":"announcement",          "activef":null,          "tilename":null       }    ] } 

i getting json string , trying convert string java object.

here pojo classes:

public class spoannouncement {      @jsonignoreproperties     private map<string, list<list<spoannouncements_properties>>> tilelevel;     private map<string, list<list<spoannouncements_properties>>> systemlevel;     private map<string, list<list<spoannouncements_properties>>> announcements;      public map<string, list<list<spoannouncements_properties>>> gettilelevel() {         return tilelevel;     }      public void settilelevel(map<string, list<list<spoannouncements_properties>>> tilelevel) {         tilelevel = tilelevel;     }      public map<string, list<list<spoannouncements_properties>>> getsystemlevel() {         return systemlevel;     }      public void setsystemlevel(map<string, list<list<spoannouncements_properties>>> systemlevel) {         systemlevel = systemlevel;     }      public map<string, list<list<spoannouncements_properties>>> getannouncements() {         return announcements;     }      public void setannouncements(map<string, list<list<spoannouncements_properties>>> announcements) {         announcements = announcements;     } } 

public class spoannouncements_properties {       private string title;     private string description;     private string announcementtype;     private string activef;     private string tilename;      public string gettitle() {         return title;     }      public void settitle(string title) {         title = title;     }      public string getdescription() {         return description;     }      public void setdescription(string description) {         description = description;     }      public string getannouncementtype() {         return announcementtype;     }      public void setannouncementtype(string announcementtype) {         announcementtype = announcementtype;     }      public string getactivef() {         return activef;     }      public void setactivef(string activef) {         activef = activef;     }      public string gettilename() {         return tilename;     }      public void settilename(string tilename) {         tilename = tilename;     }  } 

my test method verify if result has been mapped json object:

@test public void convertjsontoobject() throws ioexception {      objectmapper mapper = new objectmapper();     mapper.disable(deserializationfeature.fail_on_unknown_properties);     spoannouncement spoannouncement = mapper.readvalue(response, spoannouncement.class);     system.out.print(spoannouncement); }  

your pojo structures invalid. check out http://www.jsonschema2pojo.org - online tool generating java pojos json.

your classes should more or less below, need replace activef , tilename fields preffered types.

-----------------------------------com.example.announcement.java-----------------------------------  package com.example;  import java.util.hashmap; import java.util.map; import com.fasterxml.jackson.annotation.jsonanygetter; import com.fasterxml.jackson.annotation.jsonanysetter; import com.fasterxml.jackson.annotation.jsonignore; import com.fasterxml.jackson.annotation.jsoninclude; import com.fasterxml.jackson.annotation.jsonproperty; import com.fasterxml.jackson.annotation.jsonpropertyorder;  @jsoninclude(jsoninclude.include.non_null) @jsonpropertyorder({         "title",         "description",         "announcementtype",         "activef",         "tilename" }) public class announcement {      @jsonproperty("title")     private string title;     @jsonproperty("description")     private string description;     @jsonproperty("announcementtype")     private string announcementtype;     @jsonproperty("activef")     private object activef;     @jsonproperty("tilename")     private object tilename;     @jsonignore     private map<string, object> additionalproperties = new hashmap<string, object>();      @jsonproperty("title")     public string gettitle() {         return title;     }      @jsonproperty("title")     public void settitle(string title) {         this.title = title;     }      @jsonproperty("description")     public string getdescription() {         return description;     }      @jsonproperty("description")     public void setdescription(string description) {         this.description = description;     }      @jsonproperty("announcementtype")     public string getannouncementtype() {         return announcementtype;     }      @jsonproperty("announcementtype")     public void setannouncementtype(string announcementtype) {         this.announcementtype = announcementtype;     }      @jsonproperty("activef")     public object getactivef() {         return activef;     }      @jsonproperty("activef")     public void setactivef(object activef) {         this.activef = activef;     }      @jsonproperty("tilename")     public object gettilename() {         return tilename;     }      @jsonproperty("tilename")     public void settilename(object tilename) {         this.tilename = tilename;     }      @jsonanygetter     public map<string, object> getadditionalproperties() {         return this.additionalproperties;     }      @jsonanysetter     public void setadditionalproperty(string name, object value) {         this.additionalproperties.put(name, value);     }  } -----------------------------------com.example.spoannouncement.java-----------------------------------  package com.example;  import java.util.hashmap; import java.util.list; import java.util.map; import com.fasterxml.jackson.annotation.jsonanygetter; import com.fasterxml.jackson.annotation.jsonanysetter; import com.fasterxml.jackson.annotation.jsonignore; import com.fasterxml.jackson.annotation.jsoninclude; import com.fasterxml.jackson.annotation.jsonproperty; import com.fasterxml.jackson.annotation.jsonpropertyorder;  @jsoninclude(jsoninclude.include.non_null) @jsonpropertyorder({         "tilelevel",         "systemlevel",         "announcements" }) public class spoannouncement {      @jsonproperty("tilelevel")     private list<object> tilelevel = null;     @jsonproperty("systemlevel")     private list<systemlevel> systemlevel = null;     @jsonproperty("announcements")     private list<announcement> announcements = null;     @jsonignore     private map<string, object> additionalproperties = new hashmap<string, object>();      @jsonproperty("tilelevel")     public list<object> gettilelevel() {         return tilelevel;     }      @jsonproperty("tilelevel")     public void settilelevel(list<object> tilelevel) {         this.tilelevel = tilelevel;     }      @jsonproperty("systemlevel")     public list<systemlevel> getsystemlevel() {         return systemlevel;     }      @jsonproperty("systemlevel")     public void setsystemlevel(list<systemlevel> systemlevel) {         this.systemlevel = systemlevel;     }      @jsonproperty("announcements")     public list<announcement> getannouncements() {         return announcements;     }      @jsonproperty("announcements")     public void setannouncements(list<announcement> announcements) {         this.announcements = announcements;     }      @jsonanygetter     public map<string, object> getadditionalproperties() {         return this.additionalproperties;     }      @jsonanysetter     public void setadditionalproperty(string name, object value) {         this.additionalproperties.put(name, value);     }  } -----------------------------------com.example.systemlevel.java-----------------------------------  package com.example;  import java.util.hashmap; import java.util.map; import com.fasterxml.jackson.annotation.jsonanygetter; import com.fasterxml.jackson.annotation.jsonanysetter; import com.fasterxml.jackson.annotation.jsonignore; import com.fasterxml.jackson.annotation.jsoninclude; import com.fasterxml.jackson.annotation.jsonproperty; import com.fasterxml.jackson.annotation.jsonpropertyorder;  @jsoninclude(jsoninclude.include.non_null) @jsonpropertyorder({         "title",         "description",         "announcementtype",         "activef",         "tilename" }) public class systemlevel {      @jsonproperty("title")     private string title;     @jsonproperty("description")     private string description;     @jsonproperty("announcementtype")     private string announcementtype;     @jsonproperty("activef")     private object activef;     @jsonproperty("tilename")     private object tilename;     @jsonignore     private map<string, object> additionalproperties = new hashmap<string, object>();      @jsonproperty("title")     public string gettitle() {         return title;     }      @jsonproperty("title")     public void settitle(string title) {         this.title = title;     }      @jsonproperty("description")     public string getdescription() {         return description;     }      @jsonproperty("description")     public void setdescription(string description) {         this.description = description;     }      @jsonproperty("announcementtype")     public string getannouncementtype() {         return announcementtype;     }      @jsonproperty("announcementtype")     public void setannouncementtype(string announcementtype) {         this.announcementtype = announcementtype;     }      @jsonproperty("activef")     public object getactivef() {         return activef;     }      @jsonproperty("activef")     public void setactivef(object activef) {         this.activef = activef;     }      @jsonproperty("tilename")     public object gettilename() {         return tilename;     }      @jsonproperty("tilename")     public void settilename(object tilename) {         this.tilename = tilename;     }      @jsonanygetter     public map<string, object> getadditionalproperties() {         return this.additionalproperties;     }      @jsonanysetter     public void setadditionalproperty(string name, object value) {         this.additionalproperties.put(name, value);     }  } 

remember serialize if you're creating webservice ;).


Comments

Popular posts from this blog

PHP and MySQL WP -

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

go - golang pprof for c library code -