2

这是我的 Json 回复

"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"
    }
 ]

这是从 json 响应中获取 java objs 的 java 类

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;
}

我正在以这种方式解析

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

我收到以下解析异常

jackson.map.exc.UnrecognizedPropertyException:无法识别的字段“状态”(类 com.example.jsonproforexam.PostedEvent),未标记为可忽略

我已经声明了与 json 响应中相同的字段,那么为什么我会得到这个异常请帮助

4

2 回答 2

4

您的字段 ofPostedEventPostedEvent字段 ofPostedEventsList不可访问。

您必须将它们设置为public(不推荐)或为它们提供 POJO 样式的公共 getter 和 setter。

然后杰克逊将能够反序列化并且错误将消失。

于 2014-08-28T10:10:56.210 回答
1

可以使用JsonProperty注解指定json键

前任:

public class PostedEvent {

    @JsonProperty("status")
    String status;

    @JsonProperty("event_id")
    String eventId;

....
....

如果您在实体类中遗漏了一些来自 json 的字段,您可以使用@JsonIgnoreProperties注解忽略未知字段。

@JsonIgnoreProperties(ignoreUnknown = true)
public class PostedEvent {

...
于 2014-08-28T10:03:00.033 回答