简体   繁体   中英

How to use Jackson ObjectMapper to parse json response to java objects

Here is my Json response

"postedevent": [
    {
        "status": "true",
        "event_id": "800",
        "num_of_image_event": "0",
        "title": "Testy",
        "photo": "http://54.200.110.49/checkplanner/img/upload/21310059819profile_image_1409303464798.png",
        "event_date": "2014-08-29",
        "fullDate": "Friday - August 29, 2014",
        "event_from": "12:00AM",
        "event_to": "12:15AM",
        "city": "Ahm",
        "state": "CA",
        "member_id": "471",
        "username": "Krishna Mohan",
        "pencil": "yes",
        "attend": "yes",
        "company": "Development"
    }
 ]

this is java class to get java objs from json response

public class PostedEvent {

String status;
int event_id;
int num_of_image_event;
String title;
String photo;
String event_date;
String fullDate;
String event_from;
String event_to;
String city;
String state;
String member_id;
String username;
String pencil;
String attend;
String company;


}


public class PostedEvnetsList 
{
     ArrayList<PostedEvent> postedevent;
}

And I am parsing in this way

InputStream is = WebResponse.getResponse(url);
ObjectMapper mapper = new ObjectMapper();
PostedEvnetsList mList = null;
mList = mapper.readValue(is,PostedEvnetsList.class);
eventList = mList.postedevent;

I am getting following parse exception

jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "status" (Class com.example.jsonproforexam.PostedEvent), not marked as ignorable

I have declared same fields as in json response then why I am geting this exception Please help

Your fields of PostedEvent and the PostedEvent field of PostedEventsList are not accessible.

You must set them as public (not recommended) or provide public getters and setters for them POJO-style.

Then Jackson will be able to de-serialize and the error will go away.

You can use the JsonProperty annotation to specify the json key

Ex:

public class PostedEvent {

    @JsonProperty("status")
    String status;

    @JsonProperty("event_id")
    String eventId;

....
....

If you have missed some fields from json in your entity class, you can use @JsonIgnoreProperties annotation to ignore the unknown fields.

@JsonIgnoreProperties(ignoreUnknown = true)
public class PostedEvent {

...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM