使用 JsonNode
您可以
JsonNode从
com.fasterxml.jackson.databind包装中使用:
public class Event { public String name; public long timestamp; public JsonNode payload; // Getters and setters}然后使用以下方法解析它:
String json = "{"name":"foo","timestamp":1475840608763," + ""payload":{"foo":"bar"}}";ObjectMapper mapper = new ObjectMapper();Event event = mapper.readValue(json, Event.class);映射JsonNode
到POJO
例如,考虑您要将
JsonNode实例映射到以下类:
public class Payload { private String foo; // Getters and setters}可以使用以下代码来实现:
Payload payload = mapper.treeToValue(event.getPayload(), Payload.class);
考虑一个 Map<String, Object>
根据您的要求,您可以使用
Map<String,Object>代替
JsonNode:
public class Event { public String name; public long timestamp; public Map<String, Object> payload; // Getters and setters}如果需要将a转换
Map<String, Object>为POJO,请使用:
Payload payload = mapper.convertValue(event.getPayload(), Payload.class);
根据Jackson的文档,该
convertValue()方法在功能上类似于先将给定值序列化为JSON,然后将JSON数据绑定到给定类型的值,但是由于不需要(不需要)进行完全序列化,因此该方法应更有效。但是,相同的转换器(序列化器和反序列化器)将用于数据绑定,这意味着相同的对象映射器配置有效。



