如何根据 Java 中的变量指定 ObjectMapper 中的第二个参数?
How can I specify the second parameter in ObjectMapper based on a variable in Java?
我有一个用例,我从多个主题中消费并且基于主题我必须从字符串创建一个对象。我有大约 25 个主题导致 25 种对象。因此,我不想使用一堆 if-else,而是想使用一个映射,其中键将是主题名称。
所以,与其这样做,
if(topic.equals("testTopic") {
Event event = mapper.readValue(strMessage, TestEvent.class);
}
我想这样做
Event event = mapper.readValue(strMessage, map.get(topic));
Event是所有类实现的接口,topic会存储topic名称。
这就是我创建 ObjectMapper 的方式 -
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
我怎样才能做到这一点?提前致谢
您的地图将包含主题名称以及 class 它们应映射到的内容。
所有 classes 实现 Event.class
public class TestEvent implements Event {
}
Map<String, Class<?extends Event>> mappings = new HashMap<>();
mappings.put("testTopic", TestEvent.class);
extends 关键字可用于将其限定为“任何 class 其中 extends/implements 事件
Event testEvent = mapper.readValue("messagePayloadJSON", mappings.get("testTopic"));
我有一个用例,我从多个主题中消费并且基于主题我必须从字符串创建一个对象。我有大约 25 个主题导致 25 种对象。因此,我不想使用一堆 if-else,而是想使用一个映射,其中键将是主题名称。 所以,与其这样做,
if(topic.equals("testTopic") {
Event event = mapper.readValue(strMessage, TestEvent.class);
}
我想这样做
Event event = mapper.readValue(strMessage, map.get(topic));
Event是所有类实现的接口,topic会存储topic名称。
这就是我创建 ObjectMapper 的方式 -
ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
我怎样才能做到这一点?提前致谢
您的地图将包含主题名称以及 class 它们应映射到的内容。 所有 classes 实现 Event.class
public class TestEvent implements Event {
}
Map<String, Class<?extends Event>> mappings = new HashMap<>();
mappings.put("testTopic", TestEvent.class);
extends 关键字可用于将其限定为“任何 class 其中 extends/implements 事件
Event testEvent = mapper.readValue("messagePayloadJSON", mappings.get("testTopic"));