java - 使用杰克逊将单例json数组反序列化为相同类型的pojo?
问题描述
是否有任何开箱即用的方法可以将单例 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
我知道我可以用类似这样的其他类来包装 Event POJO:
class EventWrapper {
Event event;
@JsonCreator
EventWrapper(List<Event> events) {
this.event = events.get(0);
}
但我想避免这种情况(以及避免自定义反序列化器)
任何帮助都感激不尽。
解决方案
您可以通过以下方式获取列表,而不是创建其他类,
import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper mapper = new ObjectMapper();
List<Event> myObjects = Arrays.asList(mapper.readValue(json, Event[].class));
推荐阅读
- reactjs - Jest 遇到了意外的令牌,无法识别 ES6 和 JSX
- tensorflow - 如何在没有健身房的情况下使用自己的环境进行 DDPG
- spring-boot - Spring Security - LDAP 身份验证和数据库授权
- python - 从许多链接列表中获取具有特定模式的链接列表
- python - 如何在二维网格中查找单词?
- caching - 为什么现代处理器中的集合缓存关联性是 8 路集合关联?
- c++ - pow 在 CUDA 的 __device__ 函数中无法正常工作
- javascript - 我为什么要关心在浏览器中取消 ajax 请求?
- r - 根据上下文绘制数据可视化图
- android - 如何处理flutter_bluetooth_serial包中的String数据?