是否有任何开箱即用的方法可以将单例 json 数组反序列化为相同类型的 java pojo?
例如,我想要以下 json:
[{"eventId": "event1", "timestamp": 1232432132}]
要反序列化为以下 Java POJO:
class Event {
String eventId;
long timestamp;
}
我尝试使用以下类:
class Event {
String eventId;
long timestamp;
public Event(@JsonProperty("eventId") String event,
@JsonProperty("timestamp") long timestamp)
//fields init
}
@JsonCreator
public Event(List<Event> singletonList)
//take first element in list and set its fields on this
}
但这失败了:om.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.util.ArrayList out of FIELD_NAME token
我知道我可以用其他类包装事件 POJO,如下所示:
class EventWrapper {
Event event;
@JsonCreator
EventWrapper(List<Event> events) {
this.event = events.get(0);
}
但我想避免这种情况(以及避免自定义反序列化程序(
任何帮助将不胜感激。
你可以按照这个来获取List,而不是创建额外的类,
import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper mapper = new ObjectMapper();
List<Event> myObjects = Arrays.asList(mapper.readValue(json, Event[].class));