【发布时间】:2017-01-08 04:47:32
【问题描述】:
我有一个将接收不同 JSON 格式的 ServerEndpoint。由于每种消息类型只允许使用一个消息处理程序,因此我的一个解码器必须将消息转换为相应的 Java 对象。
在我的解码器中,我尝试使用 ObjectMapper 类将收到的消息转换为 SubClassA 或 SubClassB(实现相同的接口)。 ObjectMapper 类有一个 readValue 方法,该方法需要我尝试将 json 映射到的类型,并且当它无法转换为指定类型时会抛出异常。
我目前正在解码它,但它不是很优雅。
@Override
public Message decode(String message) throws DecodeException {
ObjectMapper mapper = new ObjectMapper();
try {
SubclassA obj = mapper.readValue(message, SubclassA .class);
return obj;
} catch (IOException e) {
}
try {
SubclassB obj = mapper.readValue(message, SubclassB .class);
return obj;
} catch (IOException e) {
}
throw new DecodeException(message, "Failed to decode message.");
}
使用 ObjectMapper 将 JSON 字符串解码为相应的 Java 对象的最佳方法是什么?
【问题讨论】:
标签: java websocket jackson decoder objectmapper